Sha256: 9154798ddfea6845d29c920806360a9356276583227508b05b37a06faf1a8e82

Contents?: true

Size: 579 Bytes

Versions: 3

Compression:

Stored size: 579 Bytes

Contents

# frozen_string_literal: true

require_relative 'statement'

module Basic101

  class PrintStatement < Statement

    def initialize(args = [])
      @args = args
    end

    def execute(runtime)
      if @args.empty?
        runtime.output.print "\n"
      else
        arg_values = @args.map do |arg|
          arg.eval(runtime)
        end
        arg_values.each do |value| 
         value.print_string runtime.output
        end
        arg_values.last.print_new_line runtime.output
      end
    end

    protected

    def state
      super + [@args]
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
basic101-1.0.2 lib/basic101/print_statement.rb
basic101-1.0.1 lib/basic101/print_statement.rb
basic101-1.0.0 lib/basic101/print_statement.rb