if toks and not n_args_max:
alert = f'{cmd_name} given argument(s) while none expected'
else:
- args: list[str] = []
- while toks and len(args) < n_args_max:
- toks = toks[0].split(maxsplit=1)
- args += [toks.pop(0)]
- if len(args) < n_args_min:
+ if toks:
+ while ' ' in toks[-1] and len(toks) < n_args_max:
+ toks = toks[:-1] + toks[-1].split(maxsplit=1)
+ if len(toks) < n_args_min:
alert = f'{cmd_name} too few arguments '\
- + f'(given {len(args)}, need {n_args_min})'
+ + f'(given {len(toks)}, need {n_args_min})'
else:
- alert = cmd(*args)
+ alert = cmd(*toks)
else:
alert = 'not prefixed by /'
if alert: