Method: GraphQL::StaticValidation::BaseVisitor.including_rules

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

.including_rules(rules) ⇒ Class

Build a class to visit the AST and perform validation, or use a pre-built class if rules is ALL_RULES or empty.

Parameters:

  • rules (Array<Module, Class>)

Returns:

  • (Class)

    A class for validating rules during visitation



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/graphql/static_validation/base_visitor.rb', line 32

def self.including_rules(rules)
  if rules.empty?
    # It's not doing _anything?!?_
    BaseVisitor
  elsif rules == ALL_RULES
    InterpreterVisitor
  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

    visitor_class.include(ContextMethods)
    visitor_class
  end
end