class GraphQL::Schema::Enum

Public Class Methods

enum_value_class(new_enum_value_class = nil) click to toggle source

@return [Class] for handling `value(…)` inputs and building `GraphQL::Enum::EnumValue`s out of them

# File lib/graphql/schema/enum.rb, line 64
def enum_value_class(new_enum_value_class = nil)
  if new_enum_value_class
    @enum_value_class = new_enum_value_class
  end
  @enum_value_class || (superclass <= GraphQL::Schema::Enum ? superclass.enum_value_class : nil)
end
kind() click to toggle source
# File lib/graphql/schema/enum.rb, line 71
def kind
  GraphQL::TypeKinds::ENUM
end
to_graphql() click to toggle source

@return [GraphQL::EnumType]

# File lib/graphql/schema/enum.rb, line 51
def to_graphql
  enum_type = GraphQL::EnumType.new
  enum_type.name = graphql_name
  enum_type.description = description
  enum_type.introspection = introspection
  values.each do |name, val|
    enum_type.add_value(val.to_graphql)
  end
  enum_type.metadata[:type_class] = self
  enum_type
end
value(*args, **kwargs, &block) click to toggle source

Define a value for this enum @param graphql_name [String, Symbol] the GraphQL value for this, usually `SCREAMING_CASE` @param description [String], the GraphQL description for this value, present in documentation @param value [Object], the translated Ruby value for this object (defaults to `graphql_name`) @param deprecation_reason [String] if this object is deprecated, include a message here @return [void] @see {Schema::EnumValue} which handles these inputs by default

# File lib/graphql/schema/enum.rb, line 36
def value(*args, **kwargs, &block)
  kwargs[:owner] = self
  value = enum_value_class.new(*args, **kwargs, &block)
  own_values[value.graphql_name] = value
  nil
end
values() click to toggle source

@return [Hash<String => GraphQL::Schema::Enum::Value>] Possible values of this enum, keyed by name

# File lib/graphql/schema/enum.rb, line 44
def values
  inherited_values = superclass <= GraphQL::Schema::Enum ? superclass.values : {}
  # Local values take precedence over inherited ones
  inherited_values.merge(own_values)
end

Private Class Methods

own_values() click to toggle source
# File lib/graphql/schema/enum.rb, line 77
def own_values
  @own_values ||= {}
end