1717use Toolkit \PFlag \Flag \Option ;
1818use Toolkit \Stdlib \Str ;
1919use function array_shift ;
20+ use function array_values ;
2021use function count ;
2122use function implode ;
2223use function is_array ;
23- use function is_numeric ;
2424use function is_string ;
25- use function ltrim ;
2625use function sprintf ;
2726use function str_split ;
2827use function strlen ;
@@ -282,33 +281,6 @@ private function appendRawArgs(array $args): void
282281 }
283282 }
284283
285- /**
286- * check and get option Name
287- *
288- * invalid:
289- * - empty string
290- * - no prefix '-' (is argument)
291- * - invalid option name as argument. eg: '- '
292- *
293- * @param string $val
294- *
295- * @return string
296- */
297- private function filterOptionName (string $ val ): string
298- {
299- // is not an option.
300- if ('' === $ val || $ val [0 ] !== '- ' ) {
301- return '' ;
302- }
303-
304- $ name = ltrim ($ val , '- ' );
305- if (is_numeric ($ name )) {
306- return '' ;
307- }
308-
309- return $ name ;
310- }
311-
312284 /**
313285 * @param string $shorts eg: 'abc' from '-abc'
314286 */
@@ -413,11 +385,14 @@ public function bindingArguments(): self
413385 }
414386 }
415387
416- if ($ this ->strictMatchArgs && $ args ) {
417- throw new FlagException (sprintf ('unknown arguments (error: "%s"). ' , implode (' ' , $ args )));
388+ if ($ args ) {
389+ if ($ this ->strictMatchArgs ) {
390+ throw new FlagException (sprintf ('unknown arguments (error: "%s"). ' , implode (' ' , $ args )));
391+ }
392+
393+ $ this ->remainArgs = array_values ($ args );
418394 }
419395
420- $ this ->remainArgs = $ args ;
421396 return $ this ;
422397 }
423398
@@ -474,7 +449,6 @@ public function addArg(
474449 mixed $ default = null ,
475450 array $ moreInfo = []
476451 ): static {
477- /** @var Argument $arg */
478452 $ arg = Argument::new ($ name , $ desc , $ type , $ required , $ default );
479453
480454 $ this ->addArgument ($ arg );
@@ -489,13 +463,12 @@ public function addArg(
489463 *
490464 * @return self
491465 * @see argRules for an rule
492- *
493466 */
494467 public function addArgByRule (string $ name , array |string $ rule ): static
495468 {
496469 $ index = count ($ this ->arguments );
497470 $ define = $ this ->parseRule ($ rule , $ name , $ index , false );
498- /** @var Argument $arg */
471+
499472 $ arg = Argument::newByArray ($ name , $ define );
500473
501474 parent ::addArgByRule ($ name , $ rule );
@@ -578,7 +551,7 @@ public function hasArg(int|string $nameOrIndex): bool
578551
579552 $ index = $ this ->name2index [$ nameOrIndex ];
580553 } else {
581- $ index = ( int ) $ nameOrIndex ;
554+ $ index = $ nameOrIndex ;
582555 }
583556
584557 return isset ($ this ->arguments [$ index ]);
@@ -696,7 +669,7 @@ public function getArgIndex(int|string $nameOrIndex): int
696669 return $ this ->name2index [$ nameOrIndex ] ?? -1 ;
697670 }
698671
699- $ index = ( int ) $ nameOrIndex ;
672+ $ index = $ nameOrIndex ;
700673 return isset ($ this ->arguments [$ index ]) ? $ index : -1 ;
701674 }
702675
@@ -772,7 +745,6 @@ public function addOpt(
772745 mixed $ default = null ,
773746 array $ moreInfo = []
774747 ): static {
775- /** @var Option $opt */
776748 $ opt = Option::new ($ name , $ desc , $ type , $ required , $ default );
777749 $ opt ->setAliases ($ moreInfo ['aliases ' ] ?? []);
778750 $ opt ->setShortcut ($ shortcut );
@@ -793,7 +765,6 @@ public function addOpt(
793765 public function addOptByRule (string $ name , array |string $ rule ): static
794766 {
795767 $ define = $ this ->parseRule ($ rule , $ name );
796- /** @var Option $option */
797768 $ option = Option::newByArray ($ define ['name ' ], $ define );
798769
799770 if (is_array ($ rule ) && isset ($ rule ['aliases ' ])) {
@@ -955,9 +926,7 @@ public function setTrustedOpt(string $name, mixed $value): void
955926 */
956927 public function getOptDefine (string $ name ): array
957928 {
958- $ opt = $ this ->mustGetOption ($ name );
959-
960- return $ opt ->toArray ();
929+ return $ this ->mustGetOption ($ name )->toArray ();
961930 }
962931
963932 /**
0 commit comments