Fix parsing & remove useless short version
This commit is contained in:
parent
94edd899d0
commit
d2a1deb392
3 changed files with 31 additions and 17 deletions
|
@ -30,6 +30,7 @@ packages = ["src/command_parser"]
|
|||
|
||||
[tool.ruff]
|
||||
line-length = 72
|
||||
builtins = ["_"]
|
||||
|
||||
[tool.ruff.format]
|
||||
quote-style = "double"
|
||||
|
|
|
@ -36,12 +36,6 @@ class Option:
|
|||
else:
|
||||
return self.single_char
|
||||
|
||||
def short(self) -> str:
|
||||
"""
|
||||
Return short version of the option (-h, -V, etc.)
|
||||
"""
|
||||
return "-{one}".format(one=self.one())
|
||||
|
||||
def long(self) -> str:
|
||||
"""
|
||||
Return long version of the option (--help=, --version=, etc.)
|
||||
|
|
|
@ -17,7 +17,7 @@ def parse(line: str, flags: list[Flag], values: list[Value]):
|
|||
_("parsing element {element}".format(element=element))
|
||||
)
|
||||
try:
|
||||
if element[0] != "-":
|
||||
if element[0] != "-": # don't start with -
|
||||
for flag in flags:
|
||||
if flag.one() in element:
|
||||
flag.apply()
|
||||
|
@ -28,19 +28,38 @@ def parse(line: str, flags: list[Flag], values: list[Value]):
|
|||
flag.one(), ""
|
||||
)
|
||||
for value in values:
|
||||
if value.one() == element:
|
||||
value.apply(elements[index + 1])
|
||||
index += 2
|
||||
elif element[1] != "-":
|
||||
for flag in flags:
|
||||
if flag.short() == element:
|
||||
flag.apply()
|
||||
index += 1
|
||||
for value in values:
|
||||
if value.one() == element:
|
||||
value.apply(elements[index + 1])
|
||||
index += 2
|
||||
if value.one() in element:
|
||||
if value.one() != element[0]:
|
||||
continue # wait until it's the first one to pick the good associated value (hacky but work)
|
||||
value.apply(elements.pop(index + 1))
|
||||
if len(element) == 1:
|
||||
index += 1 # element already removed with pop
|
||||
else:
|
||||
elements[index] = element.replace(
|
||||
value.one(), ""
|
||||
)
|
||||
elif element[1] != "-": # start with one -
|
||||
for flag in flags:
|
||||
if flag.one() in element:
|
||||
flag.apply()
|
||||
if len(element) == 2:
|
||||
index += 1
|
||||
else:
|
||||
elements[index] = element.replace(
|
||||
flag.one(), ""
|
||||
)
|
||||
for value in values:
|
||||
if value.one() in element:
|
||||
if value.one() != element[1]:
|
||||
continue # wait until it's the first one to pick the good associated value (hacky but work)
|
||||
value.apply(elements.pop(index + 1))
|
||||
if len(element) == 2:
|
||||
index += 1
|
||||
else:
|
||||
elements[index] = element.replace(
|
||||
value.one(), ""
|
||||
)
|
||||
else: # start with more than one -
|
||||
for flag in flags:
|
||||
if flag.long() == element:
|
||||
flag.apply()
|
||||
|
|
Loading…
Reference in a new issue