class EleetScript::IfNode

Public Instance Methods

eval(context) click to toggle source
# File lib/lang/interpreter.rb, line 365
def eval(context)
  cond = condition.eval(context)
  cond = (cond.class? ? cond : cond.ruby_value)
  if cond
    ret = body.eval(context)
    if body.returnable? && body.returned?
      body.reset_returned
      returned
    elsif body.nextable? && body.nexted?
      body.reset_nexted
      nexted
      return context.es_nil
    end
    ret
  else
    unless else_node.nil?
      ret = else_node.eval(context)
      if else_node.returned?
        else_node.reset_returned
        returned
      elsif else_node.nexted?
        else_node.reset_nexted
        nexted
        return context.es_nil
      end
      ret
    end
  end
end