class Tildeath::ASTNodes::Tildeath

Public Class Methods

new(victim, tildeath_body, execute_body) click to toggle source
# File lib/tildeath/ast_nodes/tildeath.rb, line 4
def initialize(victim, tildeath_body, execute_body)
  @victim = victim
  @tildeath_body = tildeath_body
  @execute_body = execute_body
end

Public Instance Methods

execute(context) click to toggle source
# File lib/tildeath/ast_nodes/tildeath.rb, line 10
def execute(context)
  fail "error: no such object: #{@victim}" unless context[@victim]
  # loop over first set of statements while victim is alive
  while context[@victim].alive?
    return unless context[:THIS].alive?
    @tildeath_body.execute(context)
  end
  # run second set of statements when victim dies
  return unless context[:THIS].alive?
  @execute_body.execute(context)
end
to_s() click to toggle source
# File lib/tildeath/ast_nodes/tildeath.rb, line 22
      def to_s
        "~ATH(#{@victim}) {
  #{@tildeath_body}
} EXECUTE(#{@execute_body})"
      end