class Dry::Types::Enum

def call(input)

Returns:
  • (Object) -

Parameters:
  • input (Object) --
def call(input)
  value =
    if values.include?(input)
      input
    elsif mapping.key?(input)
      mapping[input]
    end
  type[value || input]
end

def default(*)

def default(*)
  raise '.enum(*values).default(value) is not supported. Call '\
        '.default(value).enum(*values) instead'
end

def initialize(type, options)

Options Hash: (**options)
  • :values (Array) --

Parameters:
  • options (Hash) --
  • type (Type) --
def initialize(type, options)
  super
  @values = options.fetch(:values).freeze
  @values.each(&:freeze)
  @mapping = values.each_with_object({}) { |v, h| h[values.index(v)] = v }.freeze
end

def to_ast(meta: true)

Other tags:
    See: Definition#to_ast -

Other tags:
    Api: - public
def to_ast(meta: true)
  [:enum, [type.to_ast(meta: meta), meta ? self.meta : EMPTY_HASH]]
end