Completed
Push — master ( 0bd9e0...e9abec )
by Christoffer
01:59
created

OperationDefinitionWriter::write()   B

Complexity

Conditions 5
Paths 8

Size

Total Lines 17
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 12
nc 8
nop 1
dl 0
loc 17
rs 8.8571
c 0
b 0
f 0
1
<?php
2
3
namespace Digia\GraphQL\Language\Writer;
4
5
use Digia\GraphQL\Language\AST\Node\NodeInterface;
6
use Digia\GraphQL\Language\AST\Node\OperationDefinitionNode;
7
use function Digia\GraphQL\Language\wrap;
8
9
class OperationDefinitionWriter extends AbstractWriter
10
{
11
    /**
12
     * @param NodeInterface|OperationDefinitionNode $node
13
     * @inheritdoc
14
     */
15
    public function write(NodeInterface $node): string
16
    {
17
        $operation            = $node->getOperation();
0 ignored issues
show
Bug introduced by
The method getOperation() does not exist on Digia\GraphQL\Language\AST\Node\NodeInterface. It seems like you code against a sub-type of Digia\GraphQL\Language\AST\Node\NodeInterface such as Digia\GraphQL\Language\A...ationTypeDefinitionNode or Digia\GraphQL\Language\A...OperationDefinitionNode. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

17
        /** @scrutinizer ignore-call */ 
18
        $operation            = $node->getOperation();
Loading history...
18
        $name                 = $this->printNode($node->getName());
0 ignored issues
show
Bug introduced by
The method getName() does not exist on Digia\GraphQL\Language\AST\Node\NodeInterface. It seems like you code against a sub-type of Digia\GraphQL\Language\AST\Node\NodeInterface such as Digia\GraphQL\Language\AST\Node\DirectiveNode or Digia\GraphQL\Language\AST\Node\ArgumentNode or Digia\GraphQL\Language\AST\Node\ObjectFieldNode or Digia\GraphQL\Language\AST\Node\FragmentSpreadNode or Digia\GraphQL\Language\A...\EnumTypeDefinitionNode or Digia\GraphQL\Language\A...EnumValueDefinitionNode or Digia\GraphQL\Language\A...DirectiveDefinitionNode or Digia\GraphQL\Language\A...nputValueDefinitionNode or Digia\GraphQL\Language\A...ode\FieldDefinitionNode or Digia\GraphQL\Language\A...\VariableDefinitionNode or Digia\GraphQL\Language\A...DefinitionNodeInterface or Digia\GraphQL\Language\A...OperationDefinitionNode or Digia\GraphQL\Language\A...\FragmentDefinitionNode or Digia\GraphQL\Language\A...erfaceTypeExtensionNode or Digia\GraphQL\Language\A...ScalarTypeExtensionNode or Digia\GraphQL\Language\A...\UnionTypeExtensionNode or Digia\GraphQL\Language\A...ObjectTypeExtensionNode or Digia\GraphQL\Language\A...e\EnumTypeExtensionNode or Digia\GraphQL\Language\A...ObjectTypeExtensionNode or Digia\GraphQL\Language\AST\Node\VariableNode or Digia\GraphQL\Language\AST\Node\FieldNode or Digia\GraphQL\Language\AST\Node\NamedTypeNode. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

18
        $name                 = $this->printNode($node->/** @scrutinizer ignore-call */ getName());
Loading history...
19
        $variablesDefinitions = $this->printNodes($node->getVariableDefinitions());
0 ignored issues
show
Bug introduced by
The method getVariableDefinitions() does not exist on Digia\GraphQL\Language\AST\Node\NodeInterface. It seems like you code against a sub-type of Digia\GraphQL\Language\AST\Node\NodeInterface such as Digia\GraphQL\Language\A...OperationDefinitionNode or Digia\GraphQL\Language\A...\FragmentDefinitionNode. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

19
        $variablesDefinitions = $this->printNodes($node->/** @scrutinizer ignore-call */ getVariableDefinitions());
Loading history...
20
        $directives           = $this->printNodes($node->getDirectives());
0 ignored issues
show
Bug introduced by
The method getDirectives() does not exist on Digia\GraphQL\Language\AST\Node\NodeInterface. It seems like you code against a sub-type of Digia\GraphQL\Language\AST\Node\NodeInterface such as Digia\GraphQL\Language\AST\Node\FragmentSpreadNode or Digia\GraphQL\Language\AST\Node\InlineFragmentNode or Digia\GraphQL\Language\A...\EnumTypeDefinitionNode or Digia\GraphQL\Language\A...EnumValueDefinitionNode or Digia\GraphQL\Language\A...nputValueDefinitionNode or Digia\GraphQL\Language\A...ode\FieldDefinitionNode or Digia\GraphQL\Language\A...de\SchemaDefinitionNode or Digia\GraphQL\Language\A...UnionTypeDefinitionNode or Digia\GraphQL\Language\A...bjectTypeDefinitionNode or Digia\GraphQL\Language\A...rfaceTypeDefinitionNode or Digia\GraphQL\Language\A...bjectTypeDefinitionNode or Digia\GraphQL\Language\A...calarTypeDefinitionNode or Digia\GraphQL\Language\A...OperationDefinitionNode or Digia\GraphQL\Language\A...\FragmentDefinitionNode or Digia\GraphQL\Language\A...erfaceTypeExtensionNode or Digia\GraphQL\Language\A...ScalarTypeExtensionNode or Digia\GraphQL\Language\A...\UnionTypeExtensionNode or Digia\GraphQL\Language\A...ObjectTypeExtensionNode or Digia\GraphQL\Language\A...e\EnumTypeExtensionNode or Digia\GraphQL\Language\A...ObjectTypeExtensionNode or Digia\GraphQL\Language\AST\Node\FieldNode. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

20
        $directives           = $this->printNodes($node->/** @scrutinizer ignore-call */ getDirectives());
Loading history...
21
        $selectionSet         = $this->printNode($node->getSelectionSet());
0 ignored issues
show
Bug introduced by
The method getSelectionSet() does not exist on Digia\GraphQL\Language\AST\Node\NodeInterface. It seems like you code against a sub-type of Digia\GraphQL\Language\AST\Node\NodeInterface such as Digia\GraphQL\Language\AST\Node\FragmentSpreadNode or Digia\GraphQL\Language\AST\Node\InlineFragmentNode or Digia\GraphQL\Language\A...OperationDefinitionNode or Digia\GraphQL\Language\A...\FragmentDefinitionNode or Digia\GraphQL\Language\AST\Node\FieldNode. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

21
        $selectionSet         = $this->printNode($node->/** @scrutinizer ignore-call */ getSelectionSet());
Loading history...
22
23
        // Anonymous queries with no directives or variable definitions can use
24
        // the query short form.
25
        return null === $name && empty($directives) && empty($variablesDefinitions) && $operation === 'query'
0 ignored issues
show
introduced by
The condition null === $name is always false.
Loading history...
26
            ? $selectionSet
27
            : implode(' ', [
28
                $operation,
29
                $name . wrap('(', implode(', ', $variablesDefinitions), ')'),
30
                implode(' ', $directives),
31
                $selectionSet,
32
            ]);
33
    }
34
35
    /**
36
     * @inheritdoc
37
     */
38
    public function supportsWriter(NodeInterface $node): bool
39
    {
40
        return $node instanceof OperationDefinitionNode;
41
    }
42
}
43