Submit
Path:
~
/
/
opt
/
psa
/
admin
/
plib
/
modules
/
grafana
/
vendor
/
league
/
uri
/
UriTemplate
/
File Content:
VarSpecifier.php
<?php /** * League.Uri (https://uri.thephpleague.com) * * (c) Ignace Nyamagana Butera <nyamsprod@gmail.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ declare (strict_types=1); namespace PleskGrafana\League\Uri\UriTemplate; use PleskGrafana\League\Uri\Exceptions\SyntaxError; use function preg_match; /** * @internal The class exposes the internal representation of a Var Specifier * @link https://www.rfc-editor.org/rfc/rfc6570#section-2.3 */ final class VarSpecifier { /** * Variables specification regular expression pattern. * * @link https://tools.ietf.org/html/rfc6570#section-2.3 */ private const REGEXP_VARSPEC = '/^(?<name>(?:[A-z0-9_\\.]|%[0-9a-fA-F]{2})+)(?<modifier>\\:(?<position>\\d+)|\\*)?$/'; private const MODIFIER_POSITION_MAX_POSITION = 10000; private function __construct(public readonly string $name, public readonly string $modifier, public readonly int $position) { } public static function new(string $specification) : self { if (1 !== preg_match(self::REGEXP_VARSPEC, $specification, $parsed)) { throw new SyntaxError('The variable specification "' . $specification . '" is invalid.'); } $properties = ['name' => $parsed['name'], 'modifier' => $parsed['modifier'] ?? '', 'position' => $parsed['position'] ?? '']; if ('' !== $properties['position']) { $properties['position'] = (int) $properties['position']; $properties['modifier'] = ':'; } if ('' === $properties['position']) { $properties['position'] = 0; } if (self::MODIFIER_POSITION_MAX_POSITION <= $properties['position']) { throw new SyntaxError('The variable specification "' . $specification . '" is invalid the position modifier must be lower than 10000.'); } return new self($properties['name'], $properties['modifier'], $properties['position']); } public function toString() : string { return $this->name . $this->modifier . match (\true) { 0 < $this->position => $this->position, default => '', }; } }
Submit
FILE
FOLDER
INFO
Name
Size
Permission
Action
Expression.php
2715 bytes
0644
Operator.php
6711 bytes
0644
Template.php
4266 bytes
0644
TemplateCanNotBeExpanded.php
1386 bytes
0644
VarSpecifier.php
2237 bytes
0644
VariableBag.php
3849 bytes
0644
N4ST4R_ID | Naxtarrr