for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Digia\GraphQL\Language\ASTBuilder;
use Digia\GraphQL\Error\SyntaxErrorException;
use Digia\GraphQL\Language\LexerInterface;
use Digia\GraphQL\Language\Node\NodeKindEnum;
use Digia\GraphQL\Language\TokenKindEnum;
class SelectionSetASTBuilder extends AbstractASTBuilder
{
/**
* @inheritdoc
*/
public function supportsBuilder(string $kind): bool
return $kind === ASTKindEnum::SELECTION_SET;
}
public function build(LexerInterface $lexer, array $params): ?array
$start = $lexer->getToken();
return [
'kind' => NodeKindEnum::SELECTION_SET,
'selections' => $this->many(
$lexer,
TokenKindEnum::BRACE_L,
[$this, 'parseSelection'],
TokenKindEnum::BRACE_R
),
'loc' => $this->buildLocation($lexer, $start),
];
* @param LexerInterface $lexer
* @return array
* @throws SyntaxErrorException
protected function parseSelection(LexerInterface $lexer): array
return $this->peek($lexer, TokenKindEnum::SPREAD)
return $this->peek($lexe...indEnum::FIELD, $lexer)
null
array
? $this->buildAST(ASTKindEnum::FRAGMENT, $lexer)
: $this->buildAST(ASTKindEnum::FIELD, $lexer);