X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fpsy%2Fpsysh%2Fsrc%2FInput%2FShellInput.php;h=8675f4d12d05332ac65f6504b92efe1579ed7147;hp=e0ba2847797fc20a9ea8c21921810291a7d01633;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hpb=74df008bdbb3a11eeea356744f39b802369bda3c diff --git a/vendor/psy/psysh/src/Input/ShellInput.php b/vendor/psy/psysh/src/Input/ShellInput.php index e0ba28477..8675f4d12 100644 --- a/vendor/psy/psysh/src/Input/ShellInput.php +++ b/vendor/psy/psysh/src/Input/ShellInput.php @@ -51,10 +51,10 @@ class ShellInput extends StringInput if ($definition->getArgumentCount() > 0) { $args = $definition->getArguments(); - $lastArg = array_pop($args); + $lastArg = \array_pop($args); foreach ($args as $arg) { if ($arg instanceof CodeArgument) { - $msg = sprintf('Unexpected CodeArgument before the final position: %s', $arg->getName()); + $msg = \sprintf('Unexpected CodeArgument before the final position: %s', $arg->getName()); throw new \InvalidArgumentException($msg); } } @@ -84,31 +84,33 @@ class ShellInput extends StringInput private function tokenize($input) { $tokens = []; - $length = strlen($input); + $length = \strlen($input); $cursor = 0; while ($cursor < $length) { - if (preg_match('/\s+/A', $input, $match, null, $cursor)) { - } elseif (preg_match('/([^="\'\s]+?)(=?)(' . StringInput::REGEX_QUOTED_STRING . '+)/A', $input, $match, null, $cursor)) { + if (\preg_match('/\s+/A', $input, $match, null, $cursor)) { + } elseif (\preg_match('/([^="\'\s]+?)(=?)(' . StringInput::REGEX_QUOTED_STRING . '+)/A', $input, $match, null, $cursor)) { $tokens[] = [ - $match[1] . $match[2] . stripcslashes(str_replace(['"\'', '\'"', '\'\'', '""'], '', substr($match[3], 1, strlen($match[3]) - 2))), - stripcslashes(substr($input, $cursor)), + $match[1] . $match[2] . \stripcslashes(\str_replace(['"\'', '\'"', '\'\'', '""'], '', \substr($match[3], 1, \strlen($match[3]) - 2))), + \stripcslashes(\substr($input, $cursor)), ]; - } elseif (preg_match('/' . StringInput::REGEX_QUOTED_STRING . '/A', $input, $match, null, $cursor)) { + } elseif (\preg_match('/' . StringInput::REGEX_QUOTED_STRING . '/A', $input, $match, null, $cursor)) { $tokens[] = [ - stripcslashes(substr($match[0], 1, strlen($match[0]) - 2)), - stripcslashes(substr($input, $cursor)), + \stripcslashes(\substr($match[0], 1, \strlen($match[0]) - 2)), + \stripcslashes(\substr($input, $cursor)), ]; - } elseif (preg_match('/' . StringInput::REGEX_STRING . '/A', $input, $match, null, $cursor)) { + } elseif (\preg_match('/' . StringInput::REGEX_STRING . '/A', $input, $match, null, $cursor)) { $tokens[] = [ - stripcslashes($match[1]), - stripcslashes(substr($input, $cursor)), + \stripcslashes($match[1]), + \stripcslashes(\substr($input, $cursor)), ]; } else { // should never happen - throw new \InvalidArgumentException(sprintf('Unable to parse input near "... %s ..."', substr($input, $cursor, 10))); + // @codeCoverageIgnoreStart + throw new \InvalidArgumentException(\sprintf('Unable to parse input near "... %s ..."', \substr($input, $cursor, 10))); + // @codeCoverageIgnoreEnd } - $cursor += strlen($match[0]); + $cursor += \strlen($match[0]); } return $tokens; @@ -121,7 +123,7 @@ class ShellInput extends StringInput { $parseOptions = true; $this->parsed = $this->tokenPairs; - while (null !== $tokenPair = array_shift($this->parsed)) { + while (null !== $tokenPair = \array_shift($this->parsed)) { // token is what you'd expect. rest is the remainder of the input // string, including token, and will be used if this is a code arg. list($token, $rest) = $tokenPair; @@ -130,7 +132,7 @@ class ShellInput extends StringInput $this->parseShellArgument($token, $rest); } elseif ($parseOptions && '--' === $token) { $parseOptions = false; - } elseif ($parseOptions && 0 === strpos($token, '--')) { + } elseif ($parseOptions && 0 === \strpos($token, '--')) { $this->parseLongOption($token); } elseif ($parseOptions && '-' === $token[0] && '-' !== $token) { $this->parseShortOption($token); @@ -150,7 +152,7 @@ class ShellInput extends StringInput */ private function parseShellArgument($token, $rest) { - $c = count($this->arguments); + $c = \count($this->arguments); // if input is expecting another argument, add it if ($this->definition->hasArgument($c)) { @@ -168,6 +170,10 @@ class ShellInput extends StringInput return; } + // (copypasta) + // + // @codeCoverageIgnoreStart + // if last argument isArray(), append token to last argument if ($this->definition->hasArgument($c - 1) && $this->definition->getArgument($c - 1)->isArray()) { $arg = $this->definition->getArgument($c - 1); @@ -178,14 +184,16 @@ class ShellInput extends StringInput // unexpected argument $all = $this->definition->getArguments(); - if (count($all)) { - throw new \RuntimeException(sprintf('Too many arguments, expected arguments "%s".', implode('" "', array_keys($all)))); + if (\count($all)) { + throw new \RuntimeException(\sprintf('Too many arguments, expected arguments "%s".', \implode('" "', \array_keys($all)))); } - throw new \RuntimeException(sprintf('No arguments expected, got "%s".', $token)); + throw new \RuntimeException(\sprintf('No arguments expected, got "%s".', $token)); + // @codeCoverageIgnoreEnd } // Everything below this is copypasta from ArgvInput private methods + // @codeCoverageIgnoreStart /** * Parses a short option. @@ -194,12 +202,12 @@ class ShellInput extends StringInput */ private function parseShortOption($token) { - $name = substr($token, 1); + $name = \substr($token, 1); - if (strlen($name) > 1) { + if (\strlen($name) > 1) { if ($this->definition->hasShortcut($name[0]) && $this->definition->getOptionForShortcut($name[0])->acceptValue()) { // an option with a value (with no space) - $this->addShortOption($name[0], substr($name, 1)); + $this->addShortOption($name[0], \substr($name, 1)); } else { $this->parseShortOptionSet($name); } @@ -217,15 +225,15 @@ class ShellInput extends StringInput */ private function parseShortOptionSet($name) { - $len = strlen($name); + $len = \strlen($name); for ($i = 0; $i < $len; $i++) { if (!$this->definition->hasShortcut($name[$i])) { - throw new \RuntimeException(sprintf('The "-%s" option does not exist.', $name[$i])); + throw new \RuntimeException(\sprintf('The "-%s" option does not exist.', $name[$i])); } $option = $this->definition->getOptionForShortcut($name[$i]); if ($option->acceptValue()) { - $this->addLongOption($option->getName(), $i === $len - 1 ? null : substr($name, $i + 1)); + $this->addLongOption($option->getName(), $i === $len - 1 ? null : \substr($name, $i + 1)); break; } else { @@ -241,18 +249,18 @@ class ShellInput extends StringInput */ private function parseLongOption($token) { - $name = substr($token, 2); + $name = \substr($token, 2); - if (false !== $pos = strpos($name, '=')) { - if (0 === strlen($value = substr($name, $pos + 1))) { + if (false !== $pos = \strpos($name, '=')) { + if (0 === \strlen($value = \substr($name, $pos + 1))) { // if no value after "=" then substr() returns "" since php7 only, false before // see http://php.net/manual/fr/migration70.incompatible.php#119151 if (PHP_VERSION_ID < 70000 && false === $value) { $value = ''; } - array_unshift($this->parsed, [$value, null]); + \array_unshift($this->parsed, [$value, null]); } - $this->addLongOption(substr($name, 0, $pos), $value); + $this->addLongOption(\substr($name, 0, $pos), $value); } else { $this->addLongOption($name, null); } @@ -269,7 +277,7 @@ class ShellInput extends StringInput private function addShortOption($shortcut, $value) { if (!$this->definition->hasShortcut($shortcut)) { - throw new \RuntimeException(sprintf('The "-%s" option does not exist.', $shortcut)); + throw new \RuntimeException(\sprintf('The "-%s" option does not exist.', $shortcut)); } $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); @@ -286,30 +294,30 @@ class ShellInput extends StringInput private function addLongOption($name, $value) { if (!$this->definition->hasOption($name)) { - throw new \RuntimeException(sprintf('The "--%s" option does not exist.', $name)); + throw new \RuntimeException(\sprintf('The "--%s" option does not exist.', $name)); } $option = $this->definition->getOption($name); if (null !== $value && !$option->acceptValue()) { - throw new \RuntimeException(sprintf('The "--%s" option does not accept a value.', $name)); + throw new \RuntimeException(\sprintf('The "--%s" option does not accept a value.', $name)); } - if (in_array($value, ['', null], true) && $option->acceptValue() && count($this->parsed)) { + if (\in_array($value, ['', null], true) && $option->acceptValue() && \count($this->parsed)) { // if option accepts an optional or mandatory argument // let's see if there is one provided - $next = array_shift($this->parsed); + $next = \array_shift($this->parsed); $nextToken = $next[0]; - if ((isset($nextToken[0]) && '-' !== $nextToken[0]) || in_array($nextToken, ['', null], true)) { + if ((isset($nextToken[0]) && '-' !== $nextToken[0]) || \in_array($nextToken, ['', null], true)) { $value = $nextToken; } else { - array_unshift($this->parsed, $next); + \array_unshift($this->parsed, $next); } } if (null === $value) { if ($option->isValueRequired()) { - throw new \RuntimeException(sprintf('The "--%s" option requires a value.', $name)); + throw new \RuntimeException(\sprintf('The "--%s" option requires a value.', $name)); } if (!$option->isArray() && !$option->isValueOptional()) { @@ -323,4 +331,6 @@ class ShellInput extends StringInput $this->options[$name] = $value; } } + + // @codeCoverageIgnoreEnd }