class AboutYml::TemplateGenerator
Attributes
properties[R]
required[R]
schema[R]
Public Class Methods
new()
click to toggle source
# File lib/about_yml/template_generator.rb, line 10 def initialize @schema = ::AboutYml::AboutFile.schema @properties = schema['properties'] @required = schema['required'] end
Public Instance Methods
definition_properties(item_ref)
click to toggle source
# File lib/about_yml/template_generator.rb, line 21 def definition_properties(item_ref) schema['definitions'][item_ref.split('/').last]['properties'] end
generate()
click to toggle source
# File lib/about_yml/template_generator.rb, line 16 def generate props = properties.map { |name, defn| generate_item name, defn } "---\n# #{schema['description']}\n#\n#{props.join "\n\n"}" end
Private Instance Methods
generate_item(name, definition)
click to toggle source
# File lib/about_yml/template_generator.rb, line 27 def generate_item(name, definition) "#{property_description name, definition}\n#{name}:" \ "#{"\n- " if definition['type'] == 'array'}" \ "#{"\n placeholder_label:" if definition['patternProperties']}" end
item_description(definition)
click to toggle source
# File lib/about_yml/template_generator.rb, line 49 def item_description(definition) item_ref = definition['items']['$ref'] return '' unless item_ref properties = definition_properties item_ref descs = properties.map { |name, defn| "#{name}: #{defn['description']}" } "\n# Items:\n# - #{descs.shift}\n# #{descs.join "\n# "}" end
pattern_desc(definition)
click to toggle source
# File lib/about_yml/template_generator.rb, line 57 def pattern_desc(definition) property_descs = definition['patternProperties'].map do |prop_name, ref| descs = definition_properties(ref['$ref']).map do |defn_name, defn| "#{defn_name}: #{defn['description']}" end "\n# #{prop_name}:\n# #{descs.join "\n# "}" end.join "\n" "\n# Items by property name pattern:#{property_descs}" end
property_description(name, definition)
click to toggle source
# File lib/about_yml/template_generator.rb, line 33 def property_description(name, definition) description = "# #{definition['description']}" description += ' (required)' if required.include? name description + value_description(definition) end
value_description(definition)
click to toggle source
# File lib/about_yml/template_generator.rb, line 39 def value_description(definition) values = definition['enum'] return "\n# values: #{values.join ', '}" if values type = definition['type'] return "\n# values: true, false" if type == 'boolean' return item_description definition if type == 'array' return pattern_desc definition if definition['patternProperties'] '' end