Sha256: 8d2b4f1711629183b12ee2aa1c2449ae9db6a112e3ea1d7f03afcf001aef65ad

Contents?: true

Size: 1.09 KB

Versions: 13

Compression:

Stored size: 1.09 KB

Contents

#encoding: utf-8
module Nudge
  
  # Nudge Stacks are Arrays with some added convenience functions.
  class Stack
    delegate :clear, :to => :entries
    
    attr_accessor :entries
    attr_reader :name
    
    # Stack name must be a symbol
    def initialize(name)
      raise(ArgumentError,"Stack name must be a Symbol") if !name.kind_of?(Symbol)
      @name = name
      @entries = []
    end
    
    # Only non-nil objects can be pushed; there is no type checking or validation beyond that.
    def push(item)
      @entries.push(item) unless item == nil
    end
    
    # Removes the last item pushed to the Stack and returns it
    def pop
      return @entries.pop
    end
    
    # Reference to the last item pushed to the Stack. Doesn't remove it
    def peek
      return @entries.last
    end
    
    # Stack#depth returns the number of items
    def depth
      @entries.length
    end
    
    def inspect
      result = @entries.reverse.inject("[") do |return_string, item|
        return_string << "\n«#{item.type}» #{item.value},"
      end
      result.chop+"]"
    end
    
  end
  
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
nudge-0.2.9 lib/interpreter/stack.rb
nudge-0.2.8 lib/interpreter/stack.rb
nudge-0.2.7 lib/interpreter/stack.rb
nudge-0.2.6 lib/interpreter/stack.rb
nudge-0.2.5 lib/interpreter/stack.rb
nudge-0.2.4 lib/interpreter/stack.rb
nudge-0.2.3 lib/interpreter/stack.rb
nudge-0.2.2 lib/interpreter/stack.rb
nudge-0.2.1 lib/interpreter/stack.rb
nudge-0.2.0 lib/interpreter/stack.rb
nudge-0.1.3 lib/interpreter/stack.rb
nudge-0.1.2 lib/interpreter/stack.rb
nudge-0.1.1 lib/interpreter/stack.rb