Module: GraphQL::Language::OperationSlice
- Defined in:
- lib/graphql/language/operation_slice.rb
Class Method Summary collapse
-
.slice(document, operation_name) ⇒ Object
Public: Return’s minimal document to represent operation.
Class Method Details
.slice(document, operation_name) ⇒ Object
Public: Return’s minimal document to represent operation.
Find’s target operation and any fragment dependencies and returns a new document with just those definitions.
document - The Nodes::Document to find definitions. operation_name - The String name of Nodes::OperationDefinition
Returns new Nodes::Document.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/graphql/language/operation_slice.rb', line 15 def self.slice(document, operation_name) definitions = [] definitions << document.definitions.find { |d| d.name == operation_name } visitor = Visitor.new(document) visitor[Nodes::FragmentSpread] << -> (node, parent) { if fragment = document.definitions.find { |d| d.name == node.name } definitions << fragment end } visitor.visit Nodes::Document.new(definitions: definitions.uniq) end |