class GraphQL::StaticValidation::BaseVisitor
Attributes
context[R]
object_types[R]
@return [Array<GraphQL::ObjectType>] Types
whose scope we've entered
Public Class Methods
including_rules(rules, rewrite: true)
click to toggle source
Build a class to visit the AST and perform validation, or use a pre-built class if rules is `ALL_RULES` or empty. @param rules [Array<Module, Class>] @param rewrite [Boolean] if `false`, don't include rewrite @return [Class] A class for validating `rules` during visitation
# File lib/graphql/static_validation/base_visitor.rb, line 37 def self.including_rules(rules, rewrite: true) if rules.empty? if rewrite NoValidateVisitor else # It's not doing _anything?!?_ BaseVisitor end elsif rules == ALL_RULES if rewrite DefaultVisitor else InterpreterVisitor end else visitor_class = Class.new(self) do include(GraphQL::StaticValidation::DefinitionDependencies) end rules.reverse_each do |r| # If it's a class, it gets attached later. if !r.is_a?(Class) visitor_class.include(r) end end if rewrite visitor_class.include(GraphQL::InternalRepresentation::Rewrite) end visitor_class.include(ContextMethods) visitor_class end end
new(document, context)
click to toggle source
Calls superclass method
GraphQL::Language::Visitor::new
# File lib/graphql/static_validation/base_visitor.rb, line 5 def initialize(document, context) @path = [] @object_types = [] @directives = [] @field_definitions = [] @argument_definitions = [] @directive_definitions = [] @context = context @schema = context.schema super(document) end
Public Instance Methods
path()
click to toggle source
@return [Array<String>] The nesting of the current position in the AST
# File lib/graphql/static_validation/base_visitor.rb, line 28 def path @path.dup end
rewrite_document()
click to toggle source
This will be overwritten by {InternalRepresentation::Rewrite} if it's included
# File lib/graphql/static_validation/base_visitor.rb, line 18 def rewrite_document nil end
Private Instance Methods
add_error(error, path: nil)
click to toggle source
# File lib/graphql/static_validation/base_visitor.rb, line 207 def add_error(error, path: nil) if @context.too_many_errors? throw :too_many_validation_errors end error.path ||= (path || @path.dup) context.errors << error end