aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar jesopo2020-03-05 10:41:05 +0000
committerGravatar jesopo2020-03-05 10:41:05 +0000
commit1c09f7c854f9921274bb56819efd59f9fc1071c3 (patch)
treede2ab2296b7d125f8e393ceebf6d3441834dbffb /src
parentINVEX numeric puts mask at index 2, not 3 (diff)
signature
add a `flag` command spec type
Diffstat (limited to 'src')
-rw-r--r--src/utils/parse/spec.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/utils/parse/spec.py b/src/utils/parse/spec.py
index 7d7ffd3a..2a682c3a 100644
--- a/src/utils/parse/spec.py
+++ b/src/utils/parse/spec.py
@@ -15,6 +15,7 @@ class SpecArgumentContext(enum.IntFlag):
class SpecArgumentType(object):
context = SpecArgumentContext.ALL
+ _modifier: typing.Optional[str]
def __init__(self, type_name: str, name: typing.Optional[str],
modifier: typing.Optional[str], exported: typing.Optional[str]):
@@ -24,7 +25,7 @@ class SpecArgumentType(object):
self.exported = exported
def _set_modifier(self, modifier: typing.Optional[str]):
- pass
+ self._modifier = modifier
def name(self) -> typing.Optional[str]:
return self._name
@@ -102,6 +103,18 @@ class SpecArgumentTypeDate(SpecArgumentType):
return date_human(args[0]), 1
return None, 1
+class SpecArgumentTypeFlag(SpecArgumentType):
+ def _str(self):
+ pref = "-" if len(self._modifier) == 1 else "--"
+ return f"{pref}{self._modifier}"
+ def name(self):
+ return self._str()
+ def simple(self, args):
+ print("flag _str()", self._str())
+ if args and args[0] == self._str():
+ return True, 1
+ return None, 1
+
class SpecArgumentPrivateType(SpecArgumentType):
context = SpecArgumentContext.PRIVATE
@@ -115,7 +128,8 @@ SPEC_ARGUMENT_TYPES = {
"int": SpecArgumentTypeInt,
"date": SpecArgumentTypeDate,
"duration": SpecArgumentTypeDuration,
- "pattern": SpecArgumentTypePattern
+ "pattern": SpecArgumentTypePattern,
+ "flag": SpecArgumentTypeFlag
}
class SpecArgument(object):