class GraphQL::Client::Schema::PossibleTypes
Attributes
possible_types[R]
Public Class Methods
new(type, types)
click to toggle source
# File lib/graphql/client/schema/possible_types.rb, line 13 def initialize(type, types) @type = type unless types.is_a?(Enumerable) raise TypeError, "expected types to be Enumerable, but was #{types.class}" end @possible_types = {} types.each do |klass| unless klass.is_a?(ObjectType) raise TypeError, "expected type to be #{ObjectType}, but was #{type.class}" end @possible_types[klass.type.graphql_name] = klass end end
Public Instance Methods
cast(value, errors)
click to toggle source
Internal: Cast JSON value to wrapped value.
value - JSON value errors - Errors
instance
Returns BaseType
instance.
# File lib/graphql/client/schema/possible_types.rb, line 37 def cast(value, errors) case value when Hash typename = value["__typename"] if type = possible_types[typename] type.cast(value, errors) else raise InvariantError, "expected value to be one of (#{possible_types.keys.join(", ")}), but was #{typename.inspect}" end when NilClass nil else raise InvariantError, "expected value to be a Hash, but was #{value.class}" end end