class GraphQL::EnumType
def add_value(enum_value)
-
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)
-
(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
-
(Hash
- `{name => value}` pairs contained in this typeEnumValue>)
def values @values_by_name end
def values=(new_values)
-
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