Method: GraphQL::Schema::Enum.enum_values

Defined in:
lib/graphql/schema/enum.rb

.enum_values(context = GraphQL::Query::NullContext.instance) ⇒ Array<GraphQL::Schema::EnumValue>

Returns Possible values of this enum.

Returns:



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/graphql/schema/enum.rb', line 93

def enum_values(context = GraphQL::Query::NullContext.instance)
  inherited_values = superclass.respond_to?(:enum_values) ? superclass.enum_values(context) : nil
  visible_values = []
  types = Warden.types_from_context(context)
  own_values.each do |key, values_entry|
    visible_value = nil
    if values_entry.is_a?(Array)
      values_entry.each do |v|
        if types.visible_enum_value?(v, context)
          if visible_value.nil?
            visible_value = v
            visible_values << v
          else
            raise DuplicateNamesError.new(
              duplicated_name: v.path, duplicated_definition_1: visible_value.inspect, duplicated_definition_2: v.inspect
            )
          end
        end
      end
    elsif types.visible_enum_value?(values_entry, context)
      visible_values << values_entry
    end
  end

  if inherited_values
    # Local values take precedence over inherited ones
    inherited_values.each do |i_val|
      if !visible_values.any? { |v| v.graphql_name == i_val.graphql_name }
        visible_values << i_val
      end
    end
  end

  visible_values
end