Passed
Push — master ( c47e08...96e565 )
by Quang
02:51
created

ImplementsInterfacesASTBuilder   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
dl 0
loc 29
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A supportsBuilder() 0 3 1
A build() 0 16 3
1
<?php
2
3
namespace Digia\GraphQL\Language\ASTBuilder;
4
5
use Digia\GraphQL\Language\LexerInterface;
6
use Digia\GraphQL\Language\Node\NodeKindEnum;
7
use Digia\GraphQL\Language\TokenKindEnum;
8
9
class ImplementsInterfacesASTBuilder extends AbstractASTBuilder
10
{
11
    /**
12
     * @inheritdoc
13
     */
14
    public function supportsBuilder(string $kind): bool
15
    {
16
        return $kind === ASTKindEnum::IMPLEMENTS_INTERFACES;
17
    }
18
19
    /**
20
     * @inheritdoc
21
     */
22
    public function build(LexerInterface $lexer, array $params): ?array
23
    {
24
        $types = [];
25
26
        if ($lexer->getTokenValue() === 'implements') {
27
            $lexer->advance();
28
29
            // Optional leading ampersand
30
            $this->skip($lexer, TokenKindEnum::AMP);
31
32
            do {
33
                $types[] = $this->buildAST(ASTKindEnum::NAMED_TYPE, $lexer);
34
            } while ($this->skip($lexer, TokenKindEnum::AMP));
35
        }
36
37
        return $types;
38
    }
39
}
40