Class: Zodra::Export::ZodMapper

Inherits:
Object
  • Object
show all
Defined in:
lib/zodra/export/zod_mapper.rb

Constant Summary collapse

PRIMITIVE_MAP =
{
  string: 'z.string()',
  integer: 'z.number().int()',
  decimal: 'z.number()',
  number: 'z.number()',
  boolean: 'z.boolean()',
  datetime: 'z.iso.datetime()',
  date: 'z.iso.date()',
  uuid: 'z.uuid()',
  binary: 'z.string()'
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(key_format: :keep) ⇒ ZodMapper

Returns a new instance of ZodMapper.



18
19
20
# File 'lib/zodra/export/zod_mapper.rb', line 18

def initialize(key_format: :keep)
  @key_format = key_format
end

Instance Method Details

#map_contract(contract) ⇒ Object



34
35
36
37
38
39
# File 'lib/zodra/export/zod_mapper.rb', line 34

def map_contract(contract)
  params_output = map_contract_params(contract)
  error_types_output = map_contract_error_types(contract)
  descriptor_output = map_contract_descriptor(contract)
  [params_output, error_types_output, descriptor_output].compact.reject(&:empty?).join("\n\n")
end

#map_contracts(contracts) ⇒ Object



41
42
43
# File 'lib/zodra/export/zod_mapper.rb', line 41

def map_contracts(contracts)
  contracts.map { |contract| map_contract(contract) }.join("\n\n")
end

#map_definition(definition, lazy: false) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/zodra/export/zod_mapper.rb', line 22

def map_definition(definition, lazy: false)
  case definition.kind
  when :object then map_object(definition, lazy:)
  when :enum then map_enum(definition)
  when :union then map_union(definition, lazy:)
  end
end

#map_definitions(definitions, cycles: Set.new) ⇒ Object



30
31
32
# File 'lib/zodra/export/zod_mapper.rb', line 30

def map_definitions(definitions, cycles: Set.new)
  definitions.map { |definition| map_definition(definition, lazy: cycles.include?(definition.name)) }.join("\n\n")
end