lib/delorean/engine.rb in delorean_lang-0.3.29 vs lib/delorean/engine.rb in delorean_lang-0.3.30
- old
+ new
@@ -344,22 +344,13 @@
######################################################################
# Runtime
######################################################################
- def evaluate(node, attr, params={})
- evaluate_attrs(node, [attr], params)[0]
- end
-
- def eval_to_hash(node, attrs, params={})
- res = evaluate_attrs(node, attrs, params)
- Hash[* attrs.zip(res).flatten(1)]
- end
-
- def evaluate_attrs(node, attrs, params={})
+ def evaluate(node, attrs, params={})
raise "bad params" unless params.is_a?(Hash)
-
+
if node.is_a?(Class)
klass = node
else
raise "bad node '#{node}'" unless node =~ /^[A-Z][a-zA-Z0-9_]*$/
@@ -370,13 +361,22 @@
end
end
params[:_engine] = self
- attrs.map { |attr|
+ type_arr = attrs.is_a?(Array)
+ attrs = [attrs] unless type_arr
+
+ res = attrs.map { |attr|
raise "bad attribute '#{attr}'" unless attr =~ /^[a-z][A-Za-z0-9_]*$/
klass.send("#{attr}#{POST}".to_sym, params)
}
+ type_arr ? res : res[0]
+ end
+
+ def eval_to_hash(node, attrs, params={})
+ res = evaluate(node, attrs, params)
+ Hash[* attrs.zip(res).flatten(1)]
end
def self.grok_runtime_exception(exc)
# parse out the delorean-related backtrace records
bt = exc.backtrace.map{ |x|