* * * 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:----Lexc8foXfCjDF5jn6nqCpmRUq688T4bAmR6yBHQVbi3+tEOpvcpByFllctKNep7kBth/v+iSfbnS0NDtlfN8zBy9bd2njtxblrh4pTypejwDWltYuPNCKjMOO+KeQ5fB0xTxo9HMruy6tw0/zHBX3QMM5q9gUqKFBpwfboh39e6zRs+60P9sC3ICx1f8xI/FJCHkcGIKHQIKUJA1BWKBThoIAOBI83U6bIVKNg6QC4ZSy7XFqnWU8ooeCGSXO0Fdwzgm9kkWTpf3Z3Sd9Ur4zfn11xl/7wSV8anXXFU8jAeYDRwf2WOwhK5X7feF2/Kei6RDO4Nfc2d564Q93mWxuV7akk31CdCbY0KL5sW0CZrqAEZzSRMMJHEKntHpfQ7xX6lwtpriPSqVFC3p6YRl3itxrFu/shjII/h/hMYAq2FEzm+wfspvmjSAtwEgcqQGW89k02b3dW5dxk9yPWMSkr3LKUj1vgQ0PzLb5escubKGGGqiEKht9tbyygn3KQ/m7fOCkl5fERcQgI8r0JEhNuDScaB+xKAVY9ZX2BUDb7ZOmnob1d0E8b0jIn8q1VuX184DwCt5x8EiL3YP9sQcHBpzzBt/83Uasb9gii8OofkVN7WEPd6C0KVLf0HghPpVFsnS0kkmrXfCPOXDktjcf+ML6SMh7fm3a6TZMdGZ/yE=----ATTACHMENT:----OTE4MDk0MzA1MjE4NDY3IDU3MzQ4Mjk1NDc2MTc5OTkgNDU1NzI4NDc4NDQ2NDU2OA==