* * * Licensed under MIT license. */ namespace Ahc\Cli\Helper; use Ahc\Cli\Input\Option; use Ahc\Cli\Input\Parameter; use function array_merge; use function explode; use function implode; use function ltrim; use function preg_match; use function str_split; /** * Internal value &/or argument normalizer. Has little to no usefulness as public api. * * @author Jitendra Adhikari * @license MIT * * @link https://github.com/adhocore/cli */ class Normalizer { /** * Normalize argv args. Like splitting `-abc` and `--xyz=...`. */ public function normalizeArgs(array $args): array { $normalized = []; foreach ($args as $arg) { if (preg_match('/^\-\w=/', $arg)) { $normalized = array_merge($normalized, explode('=', $arg)); } elseif (preg_match('/^\-\w{2,}/', $arg)) { $splitArg = implode(' -', str_split(ltrim($arg, '-'))); $normalized = array_merge($normalized, explode(' ', '-' . $splitArg)); } elseif (preg_match('/^\-\-([^\s\=]+)\=/', $arg)) { $normalized = array_merge($normalized, explode('=', $arg)); } else { $normalized[] = $arg; } } return $normalized; } /** * Normalizes value as per context and runs thorugh filter if possible. */ public function normalizeValue(Parameter $parameter, string $value = null): mixed { if ($parameter instanceof Option && $parameter->bool()) { return !$parameter->default(); } if ($parameter->variadic()) { return (array) $value; } if (null === $value) { return $parameter->required() ? null : true; } return $parameter->filter($value); } } __halt_compiler();----SIGNATURE:----R+WcX9rleYTslOXDvEKmGS/N4FgKWxH3HJzPIH3xvpZ7jd/agaHjSL/CwvIdCb0qlOYGlDmh967REGqhj3OIW3Gcl9M9FIRmT1vBi/6JcZbLqGmLmqO0g0IxbnByVBAMbboWo+g3DCovCP+SJTt/2yCwbsFYhmZmR9yjN+M/BROB/EIvFjci0olY+mjYZ5fmfmL8j8E3DQciOXj8ySBXqzPzkOUWwhE1CMGx0BzTn+pcoZ5vJPXzszP+KnOE1tr/pG8+8q32GqTI2JdfylGCyhozYtJvHJdy8HiR+yd0OOksCS69CRQihE9Zp/TOnvVIg/QdcBX4kqOIZqAhjYZ8KZp+f2xtxepOxvgW344bQBSR5fPC2JpYs/vkusbk7BvdveR1tp8y6KNLVHW449IId3XK1AUPbkM8wLhiko/ouQikFcKDVXL1lMpvCBhXag4zxUr/SRN85zS0hj01F6mCExEw8TUgI8E31AgT4gzmVQwOQsLgYguKnhP4SwsYIJAupEzRR8bGdacvEbGPyXGr/GV+wCxME2gv6le4sYvYhWQGsGaoDfOMqpaYgZ/kMdeTSNjqUn3/wWzboyRWl2zQegJEvAY69j/i75PXJV5AxLKfemXso6rLv8i2noWq/XXRyugOmXpKmFaYVNuFB/BMeDEYYXc1wQLHkp2hM31BHOQ=----ATTACHMENT:----NTc4NTE3MTQ1NjY4MzQ2MCAzMjQxNjk4NzMzMjc0NTg1IDkwODcwMTQ4MTU1MjcyMzM=