Class: GraphQL::Language::Mutator

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql/language/mutator.rb

Defined Under Namespace

Modules: LazyName

Instance Method Summary collapse

Constructor Details

#initialize(document) ⇒ Mutator

Returns a new instance of Mutator.



7
8
9
# File 'lib/graphql/language/mutator.rb', line 7

def initialize(document)
  @document = document
end

Instance Method Details

#rename_definitions(definitions) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/graphql/language/mutator.rb', line 17

def rename_definitions(definitions)
  rename_node = -> (node, parent) {
    if name = definitions[node.name]
      node.extend(LazyName) if name.is_a?(Proc)
      node.name = name
    end
  }

  visitor = Visitor.new(@document)
  visitor[Nodes::FragmentDefinition].leave << rename_node
  visitor[Nodes::OperationDefinition].leave << rename_node
  visitor[Nodes::FragmentSpread].leave << rename_node
  visitor.visit

  nil
end