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|