Sha256: 1c761cfc5271f2904e9ff4a038f51d047cf670cd84f5a8da94786310672ce85d

Contents?: true

Size: 548 Bytes

Versions: 3

Compression:

Stored size: 548 Bytes

Contents

# frozen_string_literal: true

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-1.0.2 lib/basic101/on_goto_statement.rb
basic101-1.0.1 lib/basic101/on_goto_statement.rb
basic101-1.0.0 lib/basic101/on_goto_statement.rb