"time" spec arg renamed to "duration"

This commit is contained in:
jesopo 2020-01-25 23:58:09 +00:00
parent 1a8a4ac9d4
commit ced3bb23da

View file

@ -110,15 +110,12 @@ def parse_number(s: str) -> str:
raise ValueError("Unknown unit '%s' given to parse_number" % unit) raise ValueError("Unknown unit '%s' given to parse_number" % unit)
return str(number) return str(number)
def timed_args(args, min_args: int=0): def duration(s: str):
if args and args[0][0] == "+": if s[0] == "+":
if len(args[1:]) < min_args: duration = datetime.from_pretty_time(s[1:])
raise errors.EventError("Not enough arguments") if not duration == None:
time = datetime.from_pretty_time(args[0][1:]) return duration
if time == None: return None
raise errors.EventError("Invalid timeframe")
return time, args[1:]
return None, args
def format_tokens(s: str, names: typing.List[str], sigil: str="$" def format_tokens(s: str, names: typing.List[str], sigil: str="$"
) -> typing.List[typing.Tuple[int, str]]: ) -> typing.List[typing.Tuple[int, str]]:
@ -193,12 +190,14 @@ class SpecArgumentTypeString(SpecArgumentType):
return "%s ..." % SpecArgumentType.name(self) return "%s ..." % SpecArgumentType.name(self)
def simple(self, args: typing.List[str]) -> typing.Tuple[typing.Any, int]: def simple(self, args: typing.List[str]) -> typing.Tuple[typing.Any, int]:
return " ".join(args), len(args) return " ".join(args), len(args)
class SpecArgumentTypeTime(SpecArgumentType):
class SpecArgumentTypeDuration(SpecArgumentType):
def name(self): def name(self):
return "+%s" % (SpecArgumentType.name(self) or "time") return "+%s" % (SpecArgumentType.name(self) or "duration")
def simple(self, args: typing.List[str]) -> typing.Tuple[typing.Any, int]: def simple(self, args: typing.List[str]) -> typing.Tuple[typing.Any, int]:
time, _ = timed_args(args) if args:
return time, 1 return duration(args[0]), 1
return None, 1
def error(self) -> typing.Optional[str]: def error(self) -> typing.Optional[str]:
return "Invalid timeframe" return "Invalid timeframe"
@ -209,7 +208,7 @@ SPEC_ARGUMENT_TYPES = {
"word": SpecArgumentTypeWord, "word": SpecArgumentTypeWord,
"wordlower": SpecArgumentTypeWordLower, "wordlower": SpecArgumentTypeWordLower,
"string": SpecArgumentTypeString, "string": SpecArgumentTypeString,
"time": SpecArgumentTypeTime "duration": SpecArgumentTypeDuration
} }
class SpecArgument(object): class SpecArgument(object):