Code Duplication    Length = 28-30 lines in 3 locations

src/Compiler/Builder/Definition/InterfaceBuilder.php 1 location

@@ 21-50 (lines=30) @@
18
/**
19
 * Class InterfaceBuilder
20
 */
21
class InterfaceBuilder extends Builder
22
{
23
    /**
24
     * @param RuleInterface|InterfaceDefinitionNode $rule
25
     * @param Definition $parent
26
     * @return Definition
27
     * @throws \Railt\Io\Exception\ExternalFileException
28
     */
29
    public function build(RuleInterface $rule, Definition $parent): Definition
30
    {
31
        $interface = new ObjectDefinition($parent->getDocument(), $rule->getTypeName());
32
33
        $interface->withOffset($rule->getOffset());
34
        $interface->withDescription($rule->getDescription());
35
36
        foreach ($rule->getFields() as $ast) {
37
            $interface->withField($this->dependent($ast, $interface));
38
        }
39
40
        foreach ($rule->getImplementations() as $child) {
41
            $interface->withInterface($child->getTypeName());
42
        }
43
44
        foreach ($rule->getDirectives() as $ast) {
45
            $interface->withDirective($this->dependent($ast, $interface));
46
        }
47
48
        return $interface;
49
    }
50
}
51

src/Compiler/Builder/Definition/ObjectBuilder.php 1 location

@@ 21-50 (lines=30) @@
18
/**
19
 * Class ObjectBuilder
20
 */
21
class ObjectBuilder extends Builder
22
{
23
    /**
24
     * @param RuleInterface|ObjectDefinitionNode $rule
25
     * @param Definition $parent
26
     * @return Definition
27
     * @throws \Railt\Io\Exception\ExternalFileException
28
     */
29
    public function build(RuleInterface $rule, Definition $parent): Definition
30
    {
31
        $object = new ObjectDefinition($parent->getDocument(), $rule->getTypeName());
32
33
        $object->withOffset($rule->getOffset());
34
        $object->withDescription($rule->getDescription());
35
36
        foreach ($rule->getFields() as $ast) {
37
            $object->withField($this->dependent($ast, $object));
38
        }
39
40
        foreach ($rule->getImplementations() as $interface) {
41
            $object->withInterface($interface->getTypeName());
42
        }
43
44
        foreach ($rule->getDirectives() as $ast) {
45
            $object->withDirective($this->dependent($ast, $object));
46
        }
47
48
        return $object;
49
    }
50
}
51

src/Compiler/Builder/Dependent/FieldBuilder.php 1 location

@@ 21-48 (lines=28) @@
18
/**
19
 * Class FieldBuilder
20
 */
21
class FieldBuilder extends Builder
22
{
23
    /**
24
     * @param RuleInterface|FieldDefinitionNode $rule
25
     * @param Definition|Definition\TypeDefinition $parent
26
     * @return Definition
27
     * @throws \Railt\Io\Exception\ExternalFileException
28
     */
29
    public function build(RuleInterface $rule, Definition $parent): Definition
30
    {
31
        $hint = $rule->getTypeHint();
32
33
        $field = new FieldDefinition($parent, $rule->getFieldName(), $hint->getTypeName());
34
        $field->withOffset($rule->getOffset());
35
        $field->withDescription($rule->getDescription());
36
        $field->withModifiers($hint->getModifiers());
37
38
        foreach ($rule->getArguments() as $ast) {
39
            $field->withArgument($this->dependent($ast, $field));
40
        }
41
42
        foreach ($rule->getDirectives() as $ast) {
43
            $field->withDirective($this->dependent($ast, $field));
44
        }
45
46
        return $field;
47
    }
48
}
49