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