diff options
-rw-r--r-- | wqflask/wqflask/parser.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/wqflask/wqflask/parser.py b/wqflask/wqflask/parser.py index b58b6c0b..16eff609 100644 --- a/wqflask/wqflask/parser.py +++ b/wqflask/wqflask/parser.py @@ -2,13 +2,38 @@ from __future__ import print_function, division import re +from pprint import pformat as pf def parse(pstring): pstring = re.split(r"""(?:(\w+\s*=\s*\([^)]*\))|(\w+\s*[=:]\w+))""", pstring) pstring = [item.strip() for item in pstring if item and item.strip()] print(pstring) + + items = [] + for item in pstring: + if ":" in item: + key, seperator, value = item.partition(':') + elif "=" in item: + key, seperator, value = item.partition('=') + else: + seperator = None + if seperator: + if '(' in value: + assert value.startswith("("), "Invalid token" + assert value.endswith(")"), "Invalid token" + value = value[1:-1] # Get rid of the parenthesis + values = re.split(r"""\s+|,""", value) + value = [value.strip() for value in values] + term = dict(key=key, + seperator=seperator, + value=value) + else: + term = dict(search_term = item) + + items.append(term) + print(pf(items)) parse("foo=(3 2 1)") parse("LRS=(9 99 Chr4 122 155) cisLRS=(9 999 10)") |