lib/delorean/base.rb in delorean_lang-0.3.16 vs lib/delorean/base.rb in delorean_lang-0.3.17
- old
+ new
@@ -13,12 +13,15 @@
flatten: [Array, [Fixnum, nil]],
length: [Enumerable],
max: [Array],
member: "member?",
member?: [Enumerable, [Object]],
+ empty: "empty?",
+ empty?: [Enumerable],
reverse: [Array],
slice: [Array, Fixnum, Fixnum],
+ each_slice: [Array, Fixnum],
sort: [Array],
split: [String, String],
uniq: [Array],
sum: [Array],
transpose: [Array],
@@ -67,10 +70,12 @@
to_i: [[Numeric, String]],
to_f: [[Numeric, String]],
to_d: [[Numeric, String]],
to_s: [Object],
+ to_a: [Object],
+ to_json: [Object],
abs: [Numeric],
round: [Numeric, [nil, Integer]],
ceil: [Numeric],
}
@@ -82,12 +87,29 @@
# patches NodeCall and modifies params to send _parent_id.
# This whole thing needs to be redone.
engine.evaluate(node, attr, params.clone)
end
+ def /(args)
+ raise "non-array/string arg to /" unless
+ args.is_a?(Array) || args.is_a?(String)
+
+ begin
+ case args
+ when Array
+ engine.eval_to_hash(node, args, params.clone)
+ when String
+ engine.evaluate(node, args, params.clone)
+ end
+ rescue => exc
+ Delorean::Engine.grok_runtime_exception(exc)
+ end
+ end
+
+ # FIXME: % should also support string as args
def %(args)
- raise "bad arg to %" unless args.is_a?(Array)
+ raise "non-array arg to %" unless args.is_a?(Array)
# FIXME: params.clone!!!!
engine.eval_to_hash(node, args, params.clone)
end
@@ -131,12 +153,12 @@
return obj.send((attr + POST).to_sym, _e)
end
begin
return _instance_call(obj, attr, [], _e)
- rescue
+ rescue => exc
raise InvalidGetAttribute,
- "bad attribute lookup '#{attr}' on <#{obj.class}> #{obj}"
+ "attr lookup failed: '#{attr}' on <#{obj.class}> #{obj} - #{exc}"
end
end
######################################################################