Module: GraphQL::StaticValidation::TypeStack::ArgumentStrategy

Defined in:
lib/graphql/static_validation/type_stack.rb

Class Method Summary collapse

Class Method Details

.pop(stack, node) ⇒ Object


166
167
168
169
# File 'lib/graphql/static_validation/type_stack.rb', line 166

def pop(stack, node)
  stack.argument_definitions.pop
  stack.path.pop
end

.push(stack, node) ⇒ Object

Push argument_defn onto the stack. It's possible that argument_defn will be nil. Push it anyways so pop has something to pop.


147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/graphql/static_validation/type_stack.rb', line 147

def push(stack, node)
  if stack.argument_definitions.last
    arg_type = stack.argument_definitions.last.type.unwrap
    if arg_type.kind.input_object?
      argument_defn = arg_type.input_fields[node.name]
    else
      argument_defn = nil
    end
  elsif stack.directive_definitions.last
    argument_defn = stack.directive_definitions.last.arguments[node.name]
  elsif stack.field_definitions.last
    argument_defn = stack.field_definitions.last.arguments[node.name]
  else
    argument_defn = nil
  end
  stack.argument_definitions.push(argument_defn)
  stack.path.push(node.name)
end