module Swgr2rb::JsonSchemaDefinitionsParserMethods
Public Instance Methods
generate_response_schema_definitions()
click to toggle source
# File lib/endpoint_class_config_generator/json_schema_definitions_parser_methods.rb, line 3 def generate_response_schema_definitions @json[:definitions].keys.each do |name| generate_schema_definition(name) end end
Private Instance Methods
field_type_to_ruby_class(type)
click to toggle source
# File lib/endpoint_class_config_generator/json_schema_definitions_parser_methods.rb, line 47 def field_type_to_ruby_class(type) case type when 'number' then Float when 'object' then Hash else eval(type.to_s.capitalize) end end
generate_schema_definition(name)
click to toggle source
# File lib/endpoint_class_config_generator/json_schema_definitions_parser_methods.rb, line 11 def generate_schema_definition(name) @schema_definitions[name] ||= parse_schema_definition(@json[:definitions][name], name) end
get_child_schema(ref, parent_schema_names)
click to toggle source
# File lib/endpoint_class_config_generator/json_schema_definitions_parser_methods.rb, line 42 def get_child_schema(ref, parent_schema_names) schema_name = get_schema_name(ref) parent_schema_names.include?(schema_name) ? Hash : generate_schema_definition(schema_name) end
get_schema_name(ref)
click to toggle source
# File lib/endpoint_class_config_generator/json_schema_definitions_parser_methods.rb, line 55 def get_schema_name(ref) ref.split('/').last.to_sym end
parse_field_properties(field_properties, parent_schema_names = [])
click to toggle source
# File lib/endpoint_class_config_generator/json_schema_definitions_parser_methods.rb, line 24 def parse_field_properties(field_properties, parent_schema_names = []) case field_properties in { type: 'array', items: } [parse_single_field(items, parent_schema_names)] else parse_single_field(field_properties, parent_schema_names) end end
parse_schema_definition(hash, name = '')
click to toggle source
# File lib/endpoint_class_config_generator/json_schema_definitions_parser_methods.rb, line 15 def parse_schema_definition(hash, name = '') case hash in { type: 'object', properties: } properties.map do |field_name, field_properties| { field_name.to_sym => parse_field_properties(field_properties, [name, field_name.to_sym]) } end.reduce(&:merge) end end
parse_single_field(field_hash, parent_schema_names)
click to toggle source
# File lib/endpoint_class_config_generator/json_schema_definitions_parser_methods.rb, line 33 def parse_single_field(field_hash, parent_schema_names) case field_hash in { '$ref': ref } get_child_schema(ref, parent_schema_names) in { type: } field_type_to_ruby_class(type) end end