Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / vendor / psy / psysh / src / Input / ShellInput.php
index e0ba2847797fc20a9ea8c21921810291a7d01633..8675f4d12d05332ac65f6504b92efe1579ed7147 100644 (file)
@@ -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
 }