Skip to content
This repository has been archived by the owner on Mar 8, 2023. It is now read-only.

Commit

Permalink
Add AST nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
crisu83 committed Feb 15, 2018
1 parent d27673d commit 88ee2e2
Show file tree
Hide file tree
Showing 92 changed files with 1,799 additions and 286 deletions.
11 changes: 11 additions & 0 deletions src/ConfigObject.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

namespace Digia\GraphQL;

use Digia\GraphQL\Behavior\ConfigTrait;

class ConfigObject
{

use ConfigTrait;
}
9 changes: 9 additions & 0 deletions src/Language/AST/KindEnum.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,13 @@ class KindEnum

// Directive Definitions
const DIRECTIVE_DEFINITION = 'DirectiveDefinition';

/**
* @return array
* @throws \ReflectionException
*/
public static function values(): array
{
return array_values((new \ReflectionClass(__CLASS__))->getConstants());
}
}
74 changes: 74 additions & 0 deletions src/Language/AST/Location.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<?php

namespace Digia\GraphQL\Language\AST;

use Digia\GraphQL\ConfigObject;

class Location extends ConfigObject
{

/**
* @var int
*/
private $start;

/**
* @var int
*/
private $end;

/**
* @var Token
*/
private $startToken;

/**
* @var Token
*/
private $endToken;

/**
* @var Source
*/
private $source;

/**
* @return int
*/
public function getStart(): int
{
return $this->start;
}

/**
* @return int
*/
public function getEnd(): int
{
return $this->end;
}

/**
* @return Token
*/
public function getStartToken(): Token
{
return $this->startToken;
}

/**
* @return Token
*/
public function getEndToken(): Token
{
return $this->endToken;
}

/**
* @return Source
*/
public function getSource(): Source
{
return $this->source;
}
}
25 changes: 25 additions & 0 deletions src/Language/AST/Node/ArgumentNode.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace Digia\GraphQL\Language\AST\Node;

use Digia\GraphQL\Language\AST\KindEnum;
use Digia\GraphQL\Language\AST\Node\Behavior\KindTrait;
use Digia\GraphQL\Language\AST\Node\Behavior\LocationTrait;
use Digia\GraphQL\Language\AST\Node\Behavior\NameTrait;
use Digia\GraphQL\Language\AST\Node\Behavior\ValueTrait;
use Digia\GraphQL\Language\AST\Node\Contract\NodeInterface;
use Digia\GraphQL\ConfigObject;

class ArgumentNode extends ConfigObject implements NodeInterface
{

use KindTrait;
use LocationTrait;
use NameTrait;
use ValueTrait;

/**
* @var string
*/
protected $kind = KindEnum::ARGUMENT;
}
22 changes: 22 additions & 0 deletions src/Language/AST/Node/Behavior/AliasTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Digia\GraphQL\Language\AST\Node\Behavior;

use Digia\GraphQL\Language\AST\Node\NameNode;

trait AliasTrait
{

/**
* @var ?NameNode
*/
protected $alias;

/**
* @return NameNode|null
*/
public function getName(): ?NameNode
{
return $this->alias;
}
}
22 changes: 22 additions & 0 deletions src/Language/AST/Node/Behavior/ArgumentsTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Digia\GraphQL\Language\AST\Node\Behavior;

use Digia\GraphQL\Language\AST\Node\InputValueDefinitionNode;

trait ArgumentsTrait
{

/**
* @var InputValueDefinitionNode[]
*/
protected $arguments;

/**
* @return InputValueDefinitionNode[]
*/
public function getArguments(): array
{
return $this->arguments;
}
}
22 changes: 22 additions & 0 deletions src/Language/AST/Node/Behavior/DefaultValueTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Digia\GraphQL\Language\AST\Node\Behavior;

use Digia\GraphQL\Language\AST\Node\Contract\ValueNodeInterface;

trait DefaultValueTrait
{

/**
* @var ValueNodeInterface
*/
protected $defaultValue;

/**
* @return string
*/
public function getDefaultValue(): string
{
return $this->defaultValue;
}
}
20 changes: 20 additions & 0 deletions src/Language/AST/Node/Behavior/DescriptionTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace Digia\GraphQL\Language\AST\Node\Behavior;

trait DescriptionTrait
{

/**
* @var ?string
*/
protected $description;

/**
* @return mixed
*/
public function getDescription()
{
return $this->description;
}
}
22 changes: 22 additions & 0 deletions src/Language/AST/Node/Behavior/DirectivesTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Digia\GraphQL\Language\AST\Node\Behavior;

use Digia\GraphQL\Language\AST\Node\DirectiveNode;

trait DirectivesTrait
{

/**
* @var DirectiveNode[]
*/
protected $directives;

/**
* @return DirectiveNode[]
*/
public function getDirectives(): array
{
return $this->directives;
}
}
22 changes: 22 additions & 0 deletions src/Language/AST/Node/Behavior/FieldsTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Digia\GraphQL\Language\AST\Node\Behavior;

use Digia\GraphQL\Language\AST\Node\FieldDefinitionNode;

trait FieldsTrait
{

/**
* @var FieldDefinitionNode[]
*/
protected $fields;

/**
* @return FieldDefinitionNode[]
*/
public function getFields(): array
{
return $this->fields;
}
}
22 changes: 22 additions & 0 deletions src/Language/AST/Node/Behavior/InputFieldsTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Digia\GraphQL\Language\AST\Node\Behavior;

use Digia\GraphQL\Language\AST\Node\InputValueDefinitionNode;

trait InputFieldsTrait
{

/**
* @var InputValueDefinitionNode[]
*/
protected $fields;

/**
* @return InputValueDefinitionNode[]
*/
public function getFields(): array
{
return $this->fields;
}
}
22 changes: 22 additions & 0 deletions src/Language/AST/Node/Behavior/InterfacesTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Digia\GraphQL\Language\AST\Node\Behavior;

use Digia\GraphQL\Language\AST\Node\NamedTypeNode;

trait InterfacesTrait
{

/**
* @var NamedTypeNode[]
*/
protected $interfaces;

/**
* @return NamedTypeNode[]
*/
public function getInterfaces(): array
{
return $this->interfaces;
}
}
20 changes: 20 additions & 0 deletions src/Language/AST/Node/Behavior/KindTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace Digia\GraphQL\Language\AST\Node\Behavior;

trait KindTrait
{

/**
* @var string
*/
protected $kind;

/**
* @return string
*/
public function getKind(): string
{
return $this->kind;
}
}
22 changes: 22 additions & 0 deletions src/Language/AST/Node/Behavior/LocationTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Digia\GraphQL\Language\AST\Node\Behavior;

use Digia\GraphQL\Language\AST\Location;

trait LocationTrait
{

/**
* @var ?Location
*/
protected $location;

/**
* @return mixed
*/
public function getLocation(): ?Location
{
return $this->location;
}
}
22 changes: 22 additions & 0 deletions src/Language/AST/Node/Behavior/NameTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Digia\GraphQL\Language\AST\Node\Behavior;

use Digia\GraphQL\Language\AST\Node\NameNode;

trait NameTrait
{

/**
* @var NameNode
*/
protected $name;

/**
* @return NameNode
*/
public function getName(): NameNode
{
return $this->name;
}
}
22 changes: 22 additions & 0 deletions src/Language/AST/Node/Behavior/SelectionSetTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Digia\GraphQL\Language\AST\Node\Behavior;

use Digia\GraphQL\Language\AST\Node\SelectionSetNode;

trait SelectionSetTrait
{

/**
* @var SelectionSetNode
*/
protected $selectionSet;

/**
* @return SelectionSetNode
*/
public function getSelectionSet(): SelectionSetNode
{
return $this->selectionSet;
}
}

0 comments on commit 88ee2e2

Please sign in to comment.