|
7 | 7 | use Closure;
|
8 | 8 | use GraphQL\Error\Error;
|
9 | 9 | use GraphQL\Language\AST\ArgumentNode;
|
| 10 | +use GraphQL\Language\AST\BooleanValueNode; |
10 | 11 | use GraphQL\Language\AST\DirectiveNode;
|
11 | 12 | use GraphQL\Language\AST\EnumTypeDefinitionNode;
|
12 | 13 | use GraphQL\Language\AST\EnumValueDefinitionNode;
|
| 14 | +use GraphQL\Language\AST\EnumValueNode; |
| 15 | +use GraphQL\Language\AST\FloatValueNode; |
| 16 | +use GraphQL\Language\AST\IntValueNode; |
13 | 17 | use GraphQL\Language\AST\ListValueNode;
|
14 | 18 | use GraphQL\Language\AST\Node;
|
| 19 | +use GraphQL\Language\AST\NullValueNode; |
| 20 | +use GraphQL\Language\AST\ObjectValueNode; |
15 | 21 | use GraphQL\Language\AST\ScalarTypeDefinitionNode;
|
| 22 | +use GraphQL\Language\AST\StringValueNode; |
16 | 23 | use GraphQL\Language\AST\ValueNode;
|
17 | 24 | use GraphQL\Language\BlockString;
|
18 | 25 | use GraphQL\Language\Parser;
|
@@ -316,7 +323,10 @@ protected static function printInputValue($arg): string
|
316 | 323 | {
|
317 | 324 | $argDecl = $arg->name . ': ' . (string) $arg->getType();
|
318 | 325 | if ($arg->defaultValueExists()) {
|
319 |
| - $argDecl .= ' = ' . Printer::doPrint(AST::astFromValue($arg->defaultValue, $arg->getType())); |
| 326 | + // TODO Pass `options`. |
| 327 | + $value = AST::astFromValue($arg->defaultValue, $arg->getType()); |
| 328 | + $indentation = $arg instanceof InputObjectField ? ' ' : ' '; |
| 329 | + $argDecl .= ' = ' . static::printValue($value, [], $indentation); |
320 | 330 | }
|
321 | 331 |
|
322 | 332 | return $argDecl;
|
@@ -611,24 +621,35 @@ protected static function printTypeDirective(DirectiveNode $directive, array $op
|
611 | 621 | */
|
612 | 622 | protected static function printArgument(ArgumentNode $argument, array $options, string $indentation): string
|
613 | 623 | {
|
614 |
| - $value = $argument->value; |
| 624 | + return "{$indentation}{$argument->name->value}: " . |
| 625 | + self::printValue($argument->value, $options, $indentation); |
| 626 | + } |
| 627 | + |
| 628 | + /** |
| 629 | + * @param ObjectValueNode|ListValueNode|BooleanValueNode|IntValueNode|FloatValueNode|EnumValueNode|StringValueNode|NullValueNode|null $value |
| 630 | + * @param array<string, bool> $options |
| 631 | + * @phpstan-param Options $options |
| 632 | + */ |
| 633 | + protected static function printValue($value, array $options, string $indentation): string |
| 634 | + { |
| 635 | + $result = ''; |
615 | 636 |
|
616 | 637 | if ($value instanceof ListValueNode) {
|
617 | 638 | $length = 0;
|
618 | 639 | $values = [];
|
619 | 640 |
|
620 | 641 | foreach ($value->values as $item) {
|
621 |
| - $string = ' ' . $indentation . Printer::doPrint($item); |
622 |
| - $length = $length + mb_strlen($string); |
| 642 | + $string = ' '.$indentation.Printer::doPrint($item); |
| 643 | + $length = $length + mb_strlen($string); |
623 | 644 | $values[] = $string;
|
624 | 645 | }
|
625 | 646 |
|
626 |
| - $value = static::printLines($values, '[', ']', static::isLineTooLong($length), $indentation); |
| 647 | + $result = static::printLines($values, '[', ']', static::isLineTooLong($length), $indentation); |
627 | 648 | } else {
|
628 |
| - $value = Printer::doPrint($value); |
| 649 | + $result = Printer::doPrint($value); |
629 | 650 | }
|
630 | 651 |
|
631 |
| - return "{$indentation}{$argument->name->value}: {$value}"; |
| 652 | + return $result; |
632 | 653 | }
|
633 | 654 |
|
634 | 655 | /**
|
|
0 commit comments