{ "$id": "https://github.com/tcd/ginny/blob/master/schema/ginny.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "Files used by `Ginny` to generate ruby code.", "type": "object", "definitions": { "class": { "description": "Used to generate a [class](https://ruby-doc.org/core-2.6.5/Class.html).", "type": "object", "required": [ "name" ], "properties": { "name": { "description": "Name of the class.", "type": "string" }, "description": { "description": "Description of the class. [Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) is supported.", "type": "string" }, "parent": { "description": "Name of a class to inherit from. (Ex: `YourNewClass < Parent`)", "type": "string" }, "modules": { "description": "List of modules to declare the class inside.", "type": "string" }, "attrs": { "description": "An array of `Ginny::Attr`s.", "type": "array", "items": { "$ref": "#/definitions/attr" } }, "body": { "description": "String to write into the body of the class.", "type": "string" }, "file_prefix": { "description": "String to prepend to the name of the generated file.", "type": "string" } } }, "attr": { "description": "Used to generate an instance variable with getters/setters.", "type": "object", "required": [ "name" ], "properties": { "name": { "description": "Name of the attribute.", "type": "string" }, "description": { "description": "Description of the attribute. [Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) is supported.", "type": "string" }, "type": { "description": "[Type](https://rubydoc.info/gems/yard/file/docs/GettingStarted.md#Declaring_Types) of the attribute.", "type": "string" }, "default": { "description": "Default value for the attribute; set in it's Class's `initialize` function.", "type": "string" }, "read_only": { "description": "If `true`, an `attr_reader` will be generated for the attribute instead of an `attr_accessor`.", "type": "boolean" } } }, "func": { "description": "Used to generate a [method](https://ruby-doc.org/core-2.6.5/doc/syntax/methods_rdoc.html).", "type": "object", "required": [ "name" ], "properties": { "name": { "description": "Name of the function.", "type": "string" }, "description": { "description": "Description of the function. [Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) is supported.", "type": "string" }, "return_type": { "description": "Return [type](https://rubydoc.info/gems/yard/file/docs/GettingStarted.md#Declaring_Types) of the function.", "type": "string" }, "body": { "description": "String to write into the body of the function.", "type": "string" }, "modules": { "description": "List of modules to declare the function inside of.", "type": "string" }, "params": { "description": "An array of `Ginny::Param`s.", "type": "array", "items": { "$ref": "#/definitions/param" } } } }, "param": { "description": "Used to generate a function [parameter](https://ruby-doc.org/core-2.6.5/doc/syntax/methods_rdoc.html#label-Arguments).", "type": "object", "required": [ "name" ], "properties": { "name": { "description": "Name of the param.", "type": "string" }, "description": { "description": "Description of the param. [Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) is supported.", "type": "string" }, "type": { "description": "[Type](https://rubydoc.info/gems/yard/file/docs/GettingStarted.md#Declaring_Types) of the param.", "type": "string" }, "default": { "description": "Default value for the Param. Set `optional` as `true` for a default `nil` value.", "type": "string" }, "optional": { "description": "If `true`, the default value will be `nil`.", "type": "boolean" }, "keyword": { "description": "If `true`, the param will be generated as a [keyword argument](https://bugs.ruby-lang.org/issues/14183).", "type": "boolean" } } } } }