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



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

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.



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

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