Class: EleetScript::CallNode
- Inherits:
-
Object
- Object
- EleetScript::CallNode
- Defined in:
- lib/lang/nodes.rb,
lib/lang/interpreter.rb
Instance Method Summary collapse
Instance Method Details
#eval(context) ⇒ Object
308 309 310 311 312 313 314 315 316 317 |
# File 'lib/lang/interpreter.rb', line 308 def eval(context) value = if receiver receiver.eval(context) else context.current_self end evaled_args = arguments.map { |a| a.eval(context) } evaled_args << lambda.eval(context) if lambda value.call(method_name, evaled_args) end |
#to_s(level = 0) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/lang/nodes.rb', line 77 def to_s(level = 0) tabs = spaces(level) str = "#{tabs}<EleetScript::CallNode\n" if receiver.nil? str += "#{tabs} @receiver=nil\n" else str += "#{tabs} @receiver=#{receiver.to_s[0..-2]}\n" end str += "#{tabs} @method_name=#{method_name}\n" if arguments.empty? str += "#{tabs} @arguemtns=empty\n" else str += "#{tabs} @arguments=(\n" arguments.each do |arg| str += arg.to_s(level + 2) end str += "#{tabs} )\n" end if lambda.nil? str + "#{tabs} @lambda=nil\n>\n" else str += "#{tabs} @lambda=(\n" str += lambda.to_s(level + 2) end str + "#{tabs}>\n" end |