Class: ZodRails::Mapping::EnumMapper

Inherits:
Object
  • Object
show all
Defined in:
lib/zod_rails/mapping/enum_mapper.rb

Class Method Summary collapse

Class Method Details

.call(values, nullable: false, input_schema: false, has_default: false, validation_chain: "") ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/zod_rails/mapping/enum_mapper.rb', line 6

def self.call(values, nullable: false, input_schema: false, has_default: false, validation_chain: "")
  names = values.is_a?(Hash) ? values.keys : values
  quoted = names.map { |name| JSON.generate(name.to_s) }
  enum = "z.enum([#{quoted.join(", ")}])"
  base = validation_chain.empty? ? enum : "z.string()#{validation_chain}.pipe(#{enum})"

  suffix = determine_suffix(nullable: nullable, input_schema: input_schema, has_default: has_default)
  "#{base}#{suffix}"
end