Refactor code and add option -ab=c
This commit is contained in:
parent
2c4c16360c
commit
cc47b0b746
1
.gitignore
vendored
1
.gitignore
vendored
@ -138,3 +138,4 @@ dmypy.json
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
.vscode
|
||||
|
||||
47
pargv.py
47
pargv.py
@ -18,30 +18,29 @@ def parse_args(argv=None):
|
||||
args.append(arg.replace('-', '_'))
|
||||
|
||||
kwargs = {}
|
||||
values = []
|
||||
value = None
|
||||
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 isinstance(v, list) and len(v) == 1:
|
||||
kwargs[k] = v[0]
|
||||
if not arg.startswith('-'):
|
||||
if isinstance(kwargs[key], bool):
|
||||
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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user