diff options
Diffstat (limited to 'interface/input/parsers.py')
-rwxr-xr-x | interface/input/parsers.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/interface/input/parsers.py b/interface/input/parsers.py index 7dc7d82..64ba7c4 100755 --- a/interface/input/parsers.py +++ b/interface/input/parsers.py @@ -101,6 +101,30 @@ def parse_num(s): return (None if not buff else int(buff)), s, buff +def parse_numlist(s): + if not s: + return None, s, None + + rs = [] + disp = [] + tc = False + while s: + r, s, d = parse_num(s) + if r is None: + break + tc = False + rs.append(r) + disp.append(d) + if s and s[0] == ',': + s = s[1:] + tc = True + else: + break + + if not rs: + return None, s, None + return tuple(rs), s, ", ".join(disp) + (", " if tc else "") + _POSTFIXES = "mcisahkegtp" def parse_time(s): @@ -201,4 +225,5 @@ PARSE_MAP = { "$quoted_string": parse_quotedstring, "$letter": parse_any_letter, "$time": parse_time, + "$numlist": parse_numlist, } |