class EleetScript::CallNode

Public Instance Methods

eval(context) click to toggle source
# 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) click to toggle source
# 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