Class: EleetScript::IfNode
- Inherits:
-
Object
- Object
- EleetScript::IfNode
- Includes:
- Nextable, Returnable
- Defined in:
- lib/lang/nodes.rb,
lib/lang/interpreter.rb
Instance Method Summary collapse
Methods included from Nextable
#nexted, #nexted?, #reset_nexted
Methods included from Returnable
#reset_returned, #returned, #returned?
Instance Method Details
#eval(context) ⇒ Object
365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 |
# 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 |