module Stackable

Stackable ↑

Stackable mixin provides pop, push, pull, etc. It depends on slice, splice and insert.

Public Instance Methods

peek() click to toggle source

Peek at the top of the stack.

a = [1, 2, 3]
a.peek          #=> 3
a               #=> [1, 2, 3]
# File lib/core/facets/stackable.rb, line 81
def peek
  slice(-1)
end
poke(x) click to toggle source

Poke item onto the stack.

a = [2, 3]
a.poke(1)       #=> [1, 2, 3]

TODO: Better name (besides unshift)?
# File lib/core/facets/stackable.rb, line 69
def poke(x)
  insert(0,x)
end
Also aliased as: unshift
pop() click to toggle source

Pop item off stack.

a = [1, 2, 3]
a.pop           #=> 3
a               #=> [1, 2]
# File lib/core/facets/stackable.rb, line 37
def pop
  splice(-1)
end
pull() click to toggle source

Pull item off the stack.

a = [1, 2, 3]
a.pull          #=> 1
a               #=> [2, 3]
# File lib/core/facets/stackable.rb, line 56
def pull
  slice(0)
end
Also aliased as: shift
push(x) click to toggle source

Push item onto the stack.

a = [1, 2]
a.push(3)       #=> [1, 2, 3]
# File lib/core/facets/stackable.rb, line 46
def push(x)
  insert(-1,x)
end
shift()
Alias for: pull
unshift(x)
Alias for: poke