6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/zod_rails/mapping/enum_mapper.rb', line 6
def self.call(values, nullable: false, input_schema: false, array: false, **options)
has_default = options.fetch(:has_default, false)
validation_chain = options.fetch(:validation_chain, "")
element_validation_chain = options.fetch(:element_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 = if array
array_schema(enum, element_validation_chain, validation_chain)
elsif validation_chain.empty?
enum
else
"z.string()#{validation_chain}.pipe(#{enum})"
end
suffix = determine_suffix(nullable: nullable, input_schema: input_schema, has_default: has_default)
"#{base}#{suffix}"
end
|