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]
|
[tool.ruff]
|
||||||
line-length = 72
|
line-length = 72
|
||||||
|
builtins = ["_"]
|
||||||
|
|
||||||
[tool.ruff.format]
|
[tool.ruff.format]
|
||||||
quote-style = "double"
|
quote-style = "double"
|
||||||
|
|
|
@ -36,12 +36,6 @@ class Option:
|
||||||
else:
|
else:
|
||||||
return self.single_char
|
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:
|
def long(self) -> str:
|
||||||
"""
|
"""
|
||||||
Return long version of the option (--help=, --version=, etc.)
|
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))
|
_("parsing element {element}".format(element=element))
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
if element[0] != "-":
|
if element[0] != "-": # don't start with -
|
||||||
for flag in flags:
|
for flag in flags:
|
||||||
if flag.one() in element:
|
if flag.one() in element:
|
||||||
flag.apply()
|
flag.apply()
|
||||||
|
@ -28,19 +28,38 @@ def parse(line: str, flags: list[Flag], values: list[Value]):
|
||||||
flag.one(), ""
|
flag.one(), ""
|
||||||
)
|
)
|
||||||
for value in values:
|
for value in values:
|
||||||
if value.one() == element:
|
if value.one() in element:
|
||||||
value.apply(elements[index + 1])
|
if value.one() != element[0]:
|
||||||
index += 2
|
continue # wait until it's the first one to pick the good associated value (hacky but work)
|
||||||
elif element[1] != "-":
|
value.apply(elements.pop(index + 1))
|
||||||
for flag in flags:
|
if len(element) == 1:
|
||||||
if flag.short() == element:
|
index += 1 # element already removed with pop
|
||||||
flag.apply()
|
|
||||||
index += 1
|
|
||||||
for value in values:
|
|
||||||
if value.one() == element:
|
|
||||||
value.apply(elements[index + 1])
|
|
||||||
index += 2
|
|
||||||
else:
|
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:
|
for flag in flags:
|
||||||
if flag.long() == element:
|
if flag.long() == element:
|
||||||
flag.apply()
|
flag.apply()
|
||||||
|
|
Loading…
Reference in a new issue