* * * 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:----GvR7+kuqZguEQoP9OUU5+lwCEhFYu7xGXv5Aa6pEO1wX7+/GQypynzpsLWTux5V4WATr0LodIsO4/HyEmoEJFSsjLMs2WBGLDa7WlNxRBBegEm2h2rfHSVCzYZifHP+pvvechNVtvc6j77VeNIMf3JLZiqawKhUT/Pb0froJ/CbNOXZC0X98uwrVoAGC69/rvSkIIOJGoaDtyGSAyYTHV9EZ/TXeRLMZhJVgcn1+fod/sXYGU5hxpoC7SX4KrrsArUhZyNIRXD7Xqb2WXhCqLZh9XK2yGSDw3fRNECefTt/h42KisYqLBURtSInuOkHMQBegn+zvsdNAq4a3h5g82+Jj3rgOounnVDuaXgTzoiF27K8zld0sAwycEm3Rz48yH6jt2n62di7/xXms3C/zhTnK4OIjimZSkIk8cs3karydcHvQFlcwh+TGt9k0hsqmGA9LEjTC1LIeX77JEaS7bdryFG6uAUZrB4oi/NKmDVZtaLDrCHXgYoVkxIvykX3jVz9mhVl6OoBXzJmLspqppr10Cb5Ag4QGUGr9itzepslN5qa+8aixsGMy7Ilz9hzCqTVHq1ILmLG4IwVnuWxn1Mi+swjVuPfmVgF34IrSEmgPw/7E9Ht35HWPWWrDKQStIxik+WHLOr7Ve8Z1fOQAxhvIxc9YNsea15z+eTULWT0=----ATTACHMENT:----Mjk3NjIxODQyMTUxMDYwMCA5MDEyMzgwNzEwMjAyMTM4IDU3MzMzMzU1OTUzNjU2MTU=