Sha256: c63788878ecd2398519bd8a620da097021e71af3dcb1ff9031b0a518c2ebbf4b

Contents?: true

Size: 517 Bytes

Versions: 3

Compression:

Stored size: 517 Bytes

Contents

require_relative 'statement'

module Basic101

  class OnGotoStatement < Statement

    attr_writer :next_statement

    def initialize(expression, line_numbers)
      @expression = expression
      @line_numbers = line_numbers
    end

    def execute(runtime)
      index = @expression.eval(runtime).to_i - 1
      if (0...@line_numbers.size).include?(index)
        runtime.goto_line(@line_numbers[index].to_i)
      end
    end

    protected

    def state
      [@expression, @line_numbers]
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
basic101-0.4.0 lib/basic101/on_goto_statement.rb
basic101-0.2.0 lib/basic101/on_goto_statement.rb
basic101-0.1.0 lib/basic101/on_goto_statement.rb