Class: EleetScript::CallNode

Inherits:
Object
  • Object
show all
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