REDROOM
PHP 8.2.31
Path:
Logout
Edit File
Size: 2.51 KB
Close
//opt/cpanel/ea-wappspector/vendor/rector/rector/src/PhpAttribute/NodeFactory/NamedArgsFactory.php
Text
Base64
<?php declare (strict_types=1); namespace Rector\PhpAttribute\NodeFactory; use RectorPrefix202411\Nette\Utils\Strings; use PhpParser\BuilderHelpers; use PhpParser\Node\Arg; use PhpParser\Node\Expr; use PhpParser\Node\Expr\Array_; use PhpParser\Node\Expr\ArrayItem; use PhpParser\Node\Expr\ClassConstFetch; use PhpParser\Node\Identifier; use PhpParser\Node\Name; use PhpParser\Node\Scalar\String_; use Rector\NodeTypeResolver\Node\AttributeKey; final class NamedArgsFactory { /** * @see https://regex101.com/r/1bJR0J/1 * @var string */ private const CLASS_CONST_REGEX = '#(?<class>\\w+)::(?<constant>\\w+)#'; /** * @param array<string|int, mixed|Expr> $values * @return Arg[] */ public function createFromValues(array $values) : array { $args = []; foreach ($values as $key => $argValue) { $expr = BuilderHelpers::normalizeValue($argValue); $this->normalizeArrayWithConstFetchKey($expr); $name = null; // for named arguments if (\is_string($key)) { $name = new Identifier($key); } $this->normalizeStringDoubleQuote($expr); $args[] = new Arg($expr, \false, \false, [], $name); } return $args; } private function normalizeStringDoubleQuote(Expr $expr) : void { if (!$expr instanceof String_) { return; } // avoid escaping quotes + preserve newlines if (\strpos($expr->value, "'") === \false) { return; } if (\strpos($expr->value, "\n") !== \false) { return; } $expr->setAttribute(AttributeKey::KIND, String_::KIND_DOUBLE_QUOTED); } private function normalizeArrayWithConstFetchKey(Expr $expr) : void { if (!$expr instanceof Array_) { return; } foreach ($expr->items as $arrayItem) { if (!$arrayItem instanceof ArrayItem) { continue; } if (!$arrayItem->key instanceof String_) { continue; } $string = $arrayItem->key; $match = Strings::match($string->value, self::CLASS_CONST_REGEX); if ($match === null) { continue; } /** @var string $class */ $class = $match['class']; /** @var string $constant */ $constant = $match['constant']; $arrayItem->key = new ClassConstFetch(new Name($class), $constant); } } }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 5
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
AnnotationToAttributeIntegerValueCaster.php
3.37 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
AttributeNameFactory.php
2.36 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
NamedArgsFactory.php
2.51 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
PhpAttributeGroupFactory.php
6.02 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
PhpNestedAttributeGroupFactory.php
10.65 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).