tidy up export items calculations
diff --git a/reclass/defaults.py b/reclass/defaults.py
index 24801ef..d3ac29d 100644
--- a/reclass/defaults.py
+++ b/reclass/defaults.py
@@ -38,4 +38,3 @@
MERGE_ALLOW_DICT_OVER_SCALAR = False
AUTOMATIC_RECLASS_PARAMETERS = True
-AUTOMATIC_EXPORT_PARAMETERS = True
diff --git a/reclass/values/expitem.py b/reclass/values/expitem.py
index 22a473b..252ba38 100644
--- a/reclass/values/expitem.py
+++ b/reclass/values/expitem.py
@@ -9,44 +9,32 @@
from item import Item
from reclass.utils.dictpath import DictPath
from reclass.errors import UndefinedVariableError
-from reclass.defaults import AUTOMATIC_EXPORT_PARAMETERS
class ExpItem(Item):
- def __init__(self, items, delimiter):
+ def __init__(self, item, delimiter):
self._delimiter = delimiter
- self._items = items
+ self._expr = item.render(None, None)
def contents(self):
- return self._items
+ return self._expr
def has_exports(self):
return True
- def _resolve(self, path, key, dictionary):
+ def _resolve(self, path, dictionary):
try:
return path.get_value(dictionary)
except KeyError as e:
- raise UndefinedVariableError(key)
-
- def _key(self):
- if len(self._items) == 1:
- return self._items[0].contents()
- string = ''
- for item in self._items:
- string += item.contents()
- return string
+ raise UndefinedVariableError(str(path))
def render(self, context, exports):
result = []
- exp_key = self._key()
- exp_path = DictPath(self._delimiter, exp_key)
+ exp_path = DictPath(self._delimiter, self._expr)
exp_path.drop_first()
for node, items in exports.iteritems():
if exp_path.exists_in(items):
- value = copy.deepcopy(self._resolve(exp_path, exp_key, items))
- if isinstance(value, dict) and AUTOMATIC_EXPORT_PARAMETERS:
- value['_node_'] = node
+ value = { node: copy.deepcopy(self._resolve(exp_path, items)) }
result.append(value)
return result
diff --git a/reclass/values/value.py b/reclass/values/value.py
index 275ab7f..39e55c1 100644
--- a/reclass/values/value.py
+++ b/reclass/values/value.py
@@ -138,7 +138,10 @@
items = []
for token in tokens:
items.append(ScaItem(token[1]))
- return ExpItem(items, self._delimiter)
+ if len(items) == 1:
+ return ExpItem(items[0], self._delimiter)
+ else:
+ return ExpItem(CompItem(items), self_delimiter)
def _createItems(self, tokens):
items = []