about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--wqflask/wqflask/parser.py25
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)")