diff options
author | Andrew Dolgov <[email protected]> | 2022-12-13 20:08:43 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2022-12-13 20:08:43 +0300 |
commit | 8ea537123d1cef38f25f9fbe92e3a9c0f89de55a (patch) | |
tree | 0b40ea733af15c1f33403e42afc8afa14d48b87c /plugins/af_readability/vendor/league/uri/src/UriTemplate/Template.php | |
parent | 313f12ae9306fc62bbbfa10310a2feb20aa274c5 (diff) |
move af_readability out of master tree
Diffstat (limited to 'plugins/af_readability/vendor/league/uri/src/UriTemplate/Template.php')
-rw-r--r-- | plugins/af_readability/vendor/league/uri/src/UriTemplate/Template.php | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/plugins/af_readability/vendor/league/uri/src/UriTemplate/Template.php b/plugins/af_readability/vendor/league/uri/src/UriTemplate/Template.php deleted file mode 100644 index ecd130fe1..000000000 --- a/plugins/af_readability/vendor/league/uri/src/UriTemplate/Template.php +++ /dev/null @@ -1,126 +0,0 @@ -<?php - -/** - * League.Uri (https://uri.thephpleague.com) - * - * (c) Ignace Nyamagana Butera <[email protected]> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -declare(strict_types=1); - -namespace League\Uri\UriTemplate; - -use League\Uri\Exceptions\SyntaxError; -use League\Uri\Exceptions\TemplateCanNotBeExpanded; -use TypeError; -use function array_merge; -use function array_unique; -use function gettype; -use function is_object; -use function is_string; -use function method_exists; -use function preg_match_all; -use function preg_replace; -use function sprintf; -use function strpos; -use const PREG_SET_ORDER; - -final class Template -{ - /** - * Expression regular expression pattern. - */ - private const REGEXP_EXPRESSION_DETECTOR = '/\{[^\}]*\}/x'; - - private string $template; - /** @var array<string, Expression> */ - private array $expressions = []; - /** @var array<string> */ - private array $variableNames; - - private function __construct(string $template, Expression ...$expressions) - { - $this->template = $template; - $variableNames = []; - foreach ($expressions as $expression) { - $this->expressions[$expression->toString()] = $expression; - $variableNames[] = $expression->variableNames(); - } - $this->variableNames = array_unique(array_merge([], ...$variableNames)); - } - - /** - * {@inheritDoc} - */ - public static function __set_state(array $properties): self - { - return new self($properties['template'], ...array_values($properties['expressions'])); - } - - /** - * @param object|string $template a string or an object with the __toString method - * - * @throws TypeError if the template is not a string or an object with the __toString method - * @throws SyntaxError if the template contains invalid expressions - * @throws SyntaxError if the template contains invalid variable specification - */ - public static function createFromString($template): self - { - if (is_object($template) && method_exists($template, '__toString')) { - $template = (string) $template; - } - - if (!is_string($template)) { - throw new TypeError(sprintf('The template must be a string or a stringable object %s given.', gettype($template))); - } - - /** @var string $remainder */ - $remainder = preg_replace(self::REGEXP_EXPRESSION_DETECTOR, '', $template); - if (false !== strpos($remainder, '{') || false !== strpos($remainder, '}')) { - throw new SyntaxError('The template "'.$template.'" contains invalid expressions.'); - } - - $names = []; - preg_match_all(self::REGEXP_EXPRESSION_DETECTOR, $template, $findings, PREG_SET_ORDER); - $arguments = []; - foreach ($findings as $finding) { - if (!isset($names[$finding[0]])) { - $arguments[] = Expression::createFromString($finding[0]); - $names[$finding[0]] = 1; - } - } - - return new self($template, ...$arguments); - } - - public function toString(): string - { - return $this->template; - } - - /** - * @return array<string> - */ - public function variableNames(): array - { - return $this->variableNames; - } - - /** - * @throws TemplateCanNotBeExpanded if the variables is an array and a ":" modifier needs to be applied - * @throws TemplateCanNotBeExpanded if the variables contains nested array values - */ - public function expand(VariableBag $variables): string - { - $uriString = $this->template; - /** @var Expression $expression */ - foreach ($this->expressions as $pattern => $expression) { - $uriString = str_replace($pattern, $expression->expand($variables), $uriString); - } - - return $uriString; - } -} |