Refactor code and add option -ab=c

This commit is contained in:
Patrick Elmer 2023-08-15 08:41:27 +09:00
parent 2c4c16360c
commit cc47b0b746
2 changed files with 24 additions and 24 deletions

1
.gitignore vendored
View File

@ -138,3 +138,4 @@ dmypy.json
# Cython debug symbols # Cython debug symbols
cython_debug/ cython_debug/
.vscode

View File

@ -18,30 +18,29 @@ def parse_args(argv=None):
args.append(arg.replace('-', '_')) args.append(arg.replace('-', '_'))
kwargs = {} kwargs = {}
values = [] value = None
for arg in argv[len(args):]: for arg in argv[len(args):]:
if not arg.startswith('-'):
values.append(arg)
continue
if len(values):
kwargs[key] = values
values = []
key = arg[:2].lstrip('-') + arg[2:].replace('-', '_')
if arg.startswith('--'):
if '=' in arg:
key, value = key.split('=')
values.append(value)
kwargs[key] = values
else:
kwargs[key] = True
elif arg.startswith('-'):
for k in key:
kwargs[k] = True
key = arg[-1]
if len(values):
kwargs[key] = values
for k, v in kwargs.items(): if not arg.startswith('-'):
if isinstance(v, list) and len(v) == 1: if isinstance(kwargs[key], bool):
kwargs[k] = v[0] kwargs[key] = arg
elif isinstance(kwargs[key], str):
kwargs[key] = [kwargs[key]] + [arg]
elif isinstance(kwargs[key], list):
kwargs[key].append(arg)
continue
key = arg[:2].lstrip('-') + arg[2:].replace('-', '_')
if '=' in key:
key, value = key.split('=')
if not arg.startswith('--'):
for k in key[:-1]:
kwargs[k] = True
key = key[-1]
kwargs[key] = value if value else True
value = None
return (args, kwargs) return (args, kwargs)