class GraphQL::EnumType

def add_value(enum_value)

Parameters:
  • enum_value (EnumValue) -- A value to add to this type's set of values
def add_value(enum_value)
  @values_by_name[enum_value.name] = enum_value
end

def coerce_non_null_input(value_name, ctx)

Returns:
  • (Object) - the underlying value for this enum value

Parameters:
  • value_name (String) -- the string representation of this enum value

Other tags:
    Example: get episode value from Enum -
def coerce_non_null_input(value_name, ctx)
  if @values_by_name.key?(value_name)
    @values_by_name.fetch(value_name).value
  else
    nil
  end
end

def coerce_result(value, ctx = nil)

def coerce_result(value, ctx = nil)
  if ctx.nil?
    warn_deprecated_coerce("coerce_isolated_result")
    ctx = GraphQL::Query::NullContext
  end
  warden = ctx.warden
  all_values = warden ? warden.enum_values(self) : @values_by_name.each_value
  enum_value = all_values.find { |val| val.value == value }
  if enum_value
    enum_value.name
  else
    raise(UnresolvedValueError, "Can't resolve enum #{name} for #{value}")
  end
end

def initialize

def initialize
  super
  @values_by_name = {}
end

def initialize_copy(other)

def initialize_copy(other)
  super
  self.values = other.values.values
end

def kind

def kind
  GraphQL::TypeKinds::ENUM
end

def to_s

def to_s
  name
end

def validate_non_null_input(value_name, ctx)

def validate_non_null_input(value_name, ctx)
  result = GraphQL::Query::InputValidationResult.new
  allowed_values = ctx.warden.enum_values(self)
  matching_value = allowed_values.find { |v| v.name == value_name }
  if matching_value.nil?
    result.add_problem("Expected #{GraphQL::Language.serialize(value_name)} to be one of: #{allowed_values.map(&:name).join(', ')}")
  end
  result
end

def values

Returns:
  • (Hash EnumValue>) - `{name => value}` pairs contained in this type
def values
  @values_by_name
end

def values=(new_values)

Parameters:
  • new_values (Array) -- The set of values contained in this type
def values=(new_values)
  @values_by_name = {}
  new_values.each { |enum_value| add_value(enum_value) }
end