class Swgr2rb::SchemaModuleGenerator

SchemaModuleGenerator generates a Ruby module file for an endpoint object model schema from its config.

Public Instance Methods

generate_lines() click to toggle source
# File lib/endpoint_class_generator/schema_module_generator.rb, line 10
def generate_lines
  [generate_module_name,
   generate_expected_code_method,
   generate_expected_schema_method,
   'end'].compact.flatten
end

Private Instance Methods

generate_expected_code_method() click to toggle source
# File lib/endpoint_class_generator/schema_module_generator.rb, line 23
def generate_expected_code_method
  RubyFileGeneratorConstants::EXPECTED_CODE.call(@config.expected_response.code)
end
generate_expected_schema(response_schema) click to toggle source
# File lib/endpoint_class_generator/schema_module_generator.rb, line 33
def generate_expected_schema(response_schema)
  if response_schema.instance_of?(Class) || response_schema == Boolean
    response_schema.to_s.sub(/^.*::/, '')
  elsif response_schema.is_a?(Array)
    "[\n" + generate_expected_schema(response_schema.first) + "\n]"
  elsif response_schema.is_a?(Hash)
    "{\n" + generate_hash_schema(response_schema) + "\n}"
  end
end
generate_expected_schema_method() click to toggle source
# File lib/endpoint_class_generator/schema_module_generator.rb, line 27
def generate_expected_schema_method
  return unless @config.expected_response.schema.present?

  RubyFileGeneratorConstants::EXPECTED_SCHEMA.call(generate_expected_schema(@config.expected_response.schema))
end
generate_hash_schema(response_schema) click to toggle source
# File lib/endpoint_class_generator/schema_module_generator.rb, line 43
def generate_hash_schema(response_schema)
  response_schema.map do |name, type|
    "#{name}: #{generate_expected_schema(type)},"
  end.join("\n").sub(/,\Z/, '')
end
generate_module_name() click to toggle source
# File lib/endpoint_class_generator/schema_module_generator.rb, line 19
def generate_module_name
  RubyFileGeneratorConstants::MODULE_NAME.call(@opts[:name])
end