Automattic\WooCommerce\Vendor\GraphQL\Language
Printer::p │ protected static │ WC 1.0
Метод класса: Printer{}
Хуков нет.
Возвращает
null. Ничего (null).
Использование
$result = Printer::p( ?Node $node ): string;
- ?Node $node(обязательный)
- .
Код Printer::p() Printer::p WC 10.9.1
protected static function p(?Node $node): string
{
if ($node === null) {
return '';
}
switch (true) {
case $node instanceof ArgumentNode:
case $node instanceof ObjectFieldNode:
return static::p($node->name) . ': ' . static::p($node->value);
case $node instanceof BooleanValueNode:
return $node->value
? 'true'
: 'false';
case $node instanceof DirectiveDefinitionNode:
$argStrings = [];
foreach ($node->arguments as $arg) {
$argStrings[] = static::p($arg);
}
$noIndent = true;
foreach ($argStrings as $argString) {
if (strpos($argString, "\n") !== false) {
$noIndent = false;
break;
}
}
return static::addDescription($node->description, 'directive @'
. static::p($node->name)
. ($noIndent
? static::wrap('(', static::join($argStrings, ', '), ')')
: static::wrap("(\n", static::indent(static::join($argStrings, "\n")), "\n"))
. ($node->repeatable
? ' repeatable'
: '')
. ' on ' . static::printList($node->locations, ' | '));
case $node instanceof DirectiveNode:
return '@' . static::p($node->name) . static::wrap('(', static::printList($node->arguments, ', '), ')');
case $node instanceof DocumentNode:
return static::printList($node->definitions, "\n\n") . "\n";
case $node instanceof EnumTypeDefinitionNode:
return static::addDescription($node->description, static::join(
[
'enum',
static::p($node->name),
static::printList($node->directives, ' '),
static::printListBlock($node->values),
],
' '
));
case $node instanceof EnumTypeExtensionNode:
return static::join(
[
'extend enum',
static::p($node->name),
static::printList($node->directives, ' '),
static::printListBlock($node->values),
],
' '
);
case $node instanceof EnumValueDefinitionNode:
return static::addDescription(
$node->description,
static::join([static::p($node->name), static::printList($node->directives, ' ')], ' ')
);
case $node instanceof EnumValueNode:
case $node instanceof FloatValueNode:
case $node instanceof IntValueNode:
case $node instanceof NameNode:
return $node->value;
case $node instanceof FieldDefinitionNode:
$argStrings = [];
foreach ($node->arguments as $item) {
$argStrings[] = static::p($item);
}
$noIndent = true;
foreach ($argStrings as $argString) {
if (strpos($argString, "\n") !== false) {
$noIndent = false;
break;
}
}
return static::addDescription(
$node->description,
static::p($node->name)
. ($noIndent
? static::wrap('(', static::join($argStrings, ', '), ')')
: static::wrap("(\n", static::indent(static::join($argStrings, "\n")), "\n)"))
. ': ' . static::p($node->type)
. static::wrap(' ', static::printList($node->directives, ' '))
);
case $node instanceof FieldNode:
$prefix = static::wrap('', $node->alias->value ?? null, ': ') . static::p($node->name);
$argsLine = $prefix . static::wrap(
'(',
static::printList($node->arguments, ', '),
')'
);
if (strlen($argsLine) > 80) {
$argsLine = $prefix . static::wrap(
"(\n",
static::indent(
static::printList($node->arguments, "\n")
),
"\n)"
);
}
return static::join(
[
$argsLine,
static::printList($node->directives, ' '),
static::p($node->selectionSet),
],
' '
);
case $node instanceof FragmentDefinitionNode:
// Note: fragment variable definitions are experimental and may be changed or removed in the future.
return 'fragment ' . static::p($node->name)
. static::wrap(
'(',
static::printList($node->variableDefinitions ?? new NodeList([]), ', '),
')'
)
. ' on ' . static::p($node->typeCondition->name) . ' '
. static::wrap(
'',
static::printList($node->directives, ' '),
' '
)
. static::p($node->selectionSet);
case $node instanceof FragmentSpreadNode:
return '...'
. static::p($node->name)
. static::wrap(' ', static::printList($node->directives, ' '));
case $node instanceof InlineFragmentNode:
return static::join(
[
'...',
static::wrap('on ', static::p($node->typeCondition->name ?? null)),
static::printList($node->directives, ' '),
static::p($node->selectionSet),
],
' '
);
case $node instanceof InputObjectTypeDefinitionNode:
return static::addDescription($node->description, static::join(
[
'input',
static::p($node->name),
static::printList($node->directives, ' '),
static::printListBlock($node->fields),
],
' '
));
case $node instanceof InputObjectTypeExtensionNode:
return static::join(
[
'extend input',
static::p($node->name),
static::printList($node->directives, ' '),
static::printListBlock($node->fields),
],
' '
);
case $node instanceof InputValueDefinitionNode:
return static::addDescription($node->description, static::join(
[
static::p($node->name) . ': ' . static::p($node->type),
static::wrap('= ', static::p($node->defaultValue)),
static::printList($node->directives, ' '),
],
' '
));
case $node instanceof InterfaceTypeDefinitionNode:
return static::addDescription($node->description, static::join(
[
'interface',
static::p($node->name),
static::wrap('implements ', static::printList($node->interfaces, ' & ')),
static::printList($node->directives, ' '),
static::printListBlock($node->fields),
],
' '
));
case $node instanceof InterfaceTypeExtensionNode:
return static::join(
[
'extend interface',
static::p($node->name),
static::wrap('implements ', static::printList($node->interfaces, ' & ')),
static::printList($node->directives, ' '),
static::printListBlock($node->fields),
],
' '
);
case $node instanceof ListTypeNode:
return '[' . static::p($node->type) . ']';
case $node instanceof ListValueNode:
return '[' . static::printList($node->values, ', ') . ']';
case $node instanceof NamedTypeNode:
return static::p($node->name);
case $node instanceof NonNullTypeNode:
return static::p($node->type) . '!';
case $node instanceof NullValueNode:
return 'null';
case $node instanceof ObjectTypeDefinitionNode:
return static::addDescription($node->description, static::join(
[
'type',
static::p($node->name),
static::wrap('implements ', static::printList($node->interfaces, ' & ')),
static::printList($node->directives, ' '),
static::printListBlock($node->fields),
],
' '
));
case $node instanceof ObjectTypeExtensionNode:
return static::join(
[
'extend type',
static::p($node->name),
static::wrap('implements ', static::printList($node->interfaces, ' & ')),
static::printList($node->directives, ' '),
static::printListBlock($node->fields),
],
' '
);
case $node instanceof ObjectValueNode:
return '{ '
. static::printList($node->fields, ', ')
. ' }';
case $node instanceof OperationDefinitionNode:
$op = $node->operation;
$name = static::p($node->name);
$varDefs = static::wrap('(', static::printList($node->variableDefinitions, ', '), ')');
$directives = static::printList($node->directives, ' ');
$selectionSet = static::p($node->selectionSet);
// Anonymous queries with no directives or variable definitions can use
// the query short form.
return $name === '' && $directives === '' && $varDefs === '' && $op === 'query'
? $selectionSet
: static::join([$op, static::join([$name, $varDefs]), $directives, $selectionSet], ' ');
case $node instanceof OperationTypeDefinitionNode:
return $node->operation . ': ' . static::p($node->type);
case $node instanceof ScalarTypeDefinitionNode:
return static::addDescription($node->description, static::join([
'scalar',
static::p($node->name),
static::printList($node->directives, ' '),
], ' '));
case $node instanceof ScalarTypeExtensionNode:
return static::join(
[
'extend scalar',
static::p($node->name),
static::printList($node->directives, ' '),
],
' '
);
case $node instanceof SchemaDefinitionNode:
return static::addDescription($node->description, static::join(
[
'schema',
static::printList($node->directives, ' '),
static::printListBlock($node->operationTypes),
],
' '
));
case $node instanceof SchemaExtensionNode:
return static::join(
[
'extend schema',
static::printList($node->directives, ' '),
static::printListBlock($node->operationTypes),
],
' '
);
case $node instanceof SelectionSetNode:
return static::printListBlock($node->selections);
case $node instanceof StringValueNode:
if ($node->block) {
return BlockString::print($node->value);
}
return json_encode($node->value, JSON_THROW_ON_ERROR | JSON_UNESCAPED_SLASHES);
case $node instanceof UnionTypeDefinitionNode:
$typesStr = static::printList($node->types, ' | ');
return static::addDescription($node->description, static::join(
[
'union',
static::p($node->name),
static::printList($node->directives, ' '),
$typesStr !== ''
? "= {$typesStr}"
: '',
],
' '
));
case $node instanceof UnionTypeExtensionNode:
$typesStr = static::printList($node->types, ' | ');
return static::join(
[
'extend union',
static::p($node->name),
static::printList($node->directives, ' '),
$typesStr !== ''
? "= {$typesStr}"
: '',
],
' '
);
case $node instanceof VariableDefinitionNode:
return '$' . static::p($node->variable->name)
. ': '
. static::p($node->type)
. static::wrap(' = ', static::p($node->defaultValue))
. static::wrap(' ', static::printList($node->directives, ' '));
case $node instanceof VariableNode:
return '$' . static::p($node->name);
}
return '';
}