simply using comprehensions
diff --git a/reclass/values/parser.py b/reclass/values/parser.py
index 35bb355..4c98873 100644
--- a/reclass/values/parser.py
+++ b/reclass/values/parser.py
@@ -133,30 +133,19 @@
else:
return CompItem(items)
+ _create_dict = { _STR: (lambda s, v: ScaItem(v)),
+ _REF: (lambda s, v: s._create_ref(v)),
+ _EXP: (lambda s, v: s._create_inv(v)) }
+
def _create_items(self, tokens):
- items = []
- for token in tokens:
- if token[0] == _STR:
- items.append(ScaItem(token[1]))
- elif token[0] == _REF:
- items.append(self._create_ref(token[1]))
- elif token[0] == _EXP:
- items.append(self._create_exp(token[1]))
- return items
+ return [ self._create_dict[t](self, v) for t, v in tokens ]
def _create_ref(self, tokens):
- items = []
- for token in tokens:
- if token[0] == _STR:
- items.append(ScaItem(token[1]))
- elif token[0] == _REF:
- items.append(self._create_ref(token[1]))
+ items = [ self._create_dict[t](self, v) for t, v in tokens ]
return RefItem(items, self._delimiter)
- def _create_exp(self, tokens):
- items = []
- for token in tokens:
- items.append(ScaItem(token[1]))
+ def _create_inv(self, tokens):
+ items = [ ScaItem(v) for t, v in tokens ]
if len(items) == 1:
return InvItem(items[0], self._delimiter)
else: