Sha256: 3db8f9ff11aedc28e177457ab5f7b081450c9c5d93c90831e71c8ba1ac4f84ae

Contents?: true

Size: 726 Bytes

Versions: 1

Compression:

Stored size: 726 Bytes

Contents

module ReversePolishCalculator
  class Stack
        
    attr_reader :inputs, :aggregate
    
    def initialize
      @inputs, @aggregate = [].extend(Inputs), 0
    end
    
    def add(expression)
      expression.split.each do |value|
        @inputs << Input.new(value)
      end
    end
    
    def remove(input_value)
      @inputs.delete_if do |input|
        input.value == input_value.to_s
      end
    end
    
    def calculate
      @aggregate = @inputs.calculate(aggregate)
    end
    
    def output
      Output.add "stack: #{@inputs.inspect}"
      Output.add "aggregate: #{@aggregate}"
      Output.display
      Output.clear
    end
    
    def unswap
      inputs.swapped = false
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reverse-polish-calculator-0.0.1 lib/reverse-polish-calculator/stack.rb