lib/delorean/base.rb in delorean_lang-0.2.2 vs lib/delorean/base.rb in delorean_lang-0.2.3
- old
+ new
@@ -66,11 +66,13 @@
}
module BaseModule
class NodeCall < Struct.new(:_e, :engine, :node, :params)
def evaluate(attr)
- engine.evaluate(node, attr, params)
+ # FIXME: evaluate() modifies params! => need to clone it.
+ # This is pretty awful.
+ engine.evaluate(node, attr, params.clone)
end
def %(args)
raise "bad arg to %" unless args.is_a?(Array)
@@ -144,9 +146,12 @@
raise str
end
def self._node_call(node, _e, params)
context = _e[:_engine]
+
+ # a node call is being called with amended args
+ return node + params if node.is_a?(NodeCall)
engine = node.is_a?(Class) &&
context.module_name != node.module_name ?
context.get_import_engine(node.module_name) : context