PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / trunk
Matomo Analytics – Powerful, Privacy-First Insights for WordPress vtrunk
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / vendor / prefixed / symfony / console / Input / StringInput.php
matomo / app / vendor / prefixed / symfony / console / Input Last commit date
ArgvInput.php 1 year ago ArrayInput.php 1 year ago Input.php 1 year ago InputArgument.php 2 years ago InputAwareInterface.php 2 years ago InputDefinition.php 1 year ago InputInterface.php 1 year ago InputOption.php 1 year ago StreamableInputInterface.php 2 years ago StringInput.php 2 years ago
StringInput.php
76 lines
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 namespace Matomo\Dependencies\Symfony\Component\Console\Input;
12
13 use Matomo\Dependencies\Symfony\Component\Console\Exception\InvalidArgumentException;
14 /**
15 * StringInput represents an input provided as a string.
16 *
17 * Usage:
18 *
19 * $input = new StringInput('foo --bar="foobar"');
20 *
21 * @author Fabien Potencier <fabien@symfony.com>
22 */
23 class StringInput extends ArgvInput
24 {
25 public const REGEX_STRING = '([^\\s]+?)(?:\\s|(?<!\\\\)"|(?<!\\\\)\'|$)';
26 public const REGEX_UNQUOTED_STRING = '([^\\s\\\\]+?)';
27 public const REGEX_QUOTED_STRING = '(?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\')';
28 /**
29 * @param string $input A string representing the parameters from the CLI
30 */
31 public function __construct(string $input)
32 {
33 parent::__construct([]);
34 $this->setTokens($this->tokenize($input));
35 }
36 /**
37 * Tokenizes a string.
38 *
39 * @throws InvalidArgumentException When unable to parse input (should never happen)
40 */
41 private function tokenize(string $input) : array
42 {
43 $tokens = [];
44 $length = \strlen($input);
45 $cursor = 0;
46 $token = null;
47 while ($cursor < $length) {
48 if ('\\' === $input[$cursor]) {
49 $token .= $input[++$cursor] ?? '';
50 ++$cursor;
51 continue;
52 }
53 if (preg_match('/\\s+/A', $input, $match, 0, $cursor)) {
54 if (null !== $token) {
55 $tokens[] = $token;
56 $token = null;
57 }
58 } elseif (preg_match('/([^="\'\\s]+?)(=?)(' . self::REGEX_QUOTED_STRING . '+)/A', $input, $match, 0, $cursor)) {
59 $token .= $match[1] . $match[2] . stripcslashes(str_replace(['"\'', '\'"', '\'\'', '""'], '', substr($match[3], 1, -1)));
60 } elseif (preg_match('/' . self::REGEX_QUOTED_STRING . '/A', $input, $match, 0, $cursor)) {
61 $token .= stripcslashes(substr($match[0], 1, -1));
62 } elseif (preg_match('/' . self::REGEX_UNQUOTED_STRING . '/A', $input, $match, 0, $cursor)) {
63 $token .= $match[1];
64 } else {
65 // should never happen
66 throw new InvalidArgumentException(sprintf('Unable to parse input near "... %s ...".', substr($input, $cursor, 10)));
67 }
68 $cursor += \strlen($match[0]);
69 }
70 if (null !== $token) {
71 $tokens[] = $token;
72 }
73 return $tokens;
74 }
75 }
76