Module: Sublayer::Components::OutputAdapters::Formattable
- Defined in:
- lib/sublayer/components/output_adapters/formattable.rb
Instance Method Summary collapse
- #build_json_schema(props) ⇒ Object
- #format_properties ⇒ Object
- #format_property(property) ⇒ Object
- #format_required ⇒ Object
Instance Method Details
#build_json_schema(props) ⇒ Object
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/sublayer/components/output_adapters/formattable.rb', line 9 def build_json_schema(props) formatted_properties = {} props.map do |prop| formatted_property = format_property(prop) formatted_properties[prop.name.to_sym] = formatted_property end formatted_properties end |
#format_properties ⇒ Object
5 6 7 |
# File 'lib/sublayer/components/output_adapters/formattable.rb', line 5 def format_properties build_json_schema(self.properties) end |
#format_property(property) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/sublayer/components/output_adapters/formattable.rb', line 20 def format_property(property) result = { type: property.type, description: property.description } result[:enum] = property.enum if property.respond_to?(:enum) && property.enum result[:default] = property.default if property.respond_to?(:default) && !property.default.nil? result[:minimum] = property.minimum if property.respond_to?(:minimum) && !property.minimum.nil? result[:maximum] = property.maximum if property.respond_to?(:maximum) && !property.maximum.nil? case property.type when 'array' result[:items] = property.items.is_a?(OpenStruct) ? format_property(property.items) : property.items when 'object' result[:properties] = build_json_schema(property.properties) if property.properties result[:required] = property.properties.select(&:required).map(&:name) if property.properties end result end |
#format_required ⇒ Object
42 43 44 |
# File 'lib/sublayer/components/output_adapters/formattable.rb', line 42 def format_required self.properties.select(&:required).map(&:name) end |