Module: SchemaGraphy::CFGYML::DocBuilder
- Defined in:
- lib/schemagraphy/cfgyml/doc_builder.rb
Overview
Builds documentation-friendly CFGYML references for machine consumption.
Class Method Summary collapse
- .build_entry(path, definition) ⇒ Object
- .build_properties(properties, path) ⇒ Object
- .call(schema, options = {}) ⇒ Object
- .reference_hash(schema) ⇒ Object
Class Method Details
.build_entry(path, definition) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/schemagraphy/cfgyml/doc_builder.rb', line 39 def build_entry path, definition entry = { 'path' => path.join('.'), 'desc' => definition['desc'], 'docs' => definition['docs'], 'type' => definition['type'], 'templating' => definition['templating'], 'default' => definition.key?('dflt') ? definition['dflt'] : nil } entry.compact end |
.build_properties(properties, path) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/schemagraphy/cfgyml/doc_builder.rb', line 25 def build_properties properties, path return {} unless properties.is_a?(Hash) properties.each_with_object({}) do |(key, definition), acc| next unless definition.is_a?(Hash) current_path = path + [key] entry = build_entry(current_path, definition) children = build_properties(definition['properties'], current_path) entry['properties'] = children unless children.empty? acc[key] = entry end end |
.call(schema, options = {}) ⇒ Object
11 12 13 14 15 |
# File 'lib/schemagraphy/cfgyml/doc_builder.rb', line 11 def call schema, = {} pretty = .fetch(:pretty, true) data = reference_hash(schema) pretty ? JSON.pretty_generate(data) : JSON.generate(data) end |
.reference_hash(schema) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/schemagraphy/cfgyml/doc_builder.rb', line 17 def reference_hash schema { 'format' => 'releasehx-config-reference', 'version' => 1, 'properties' => build_properties(schema['properties'], []) } end |