Sha256: 5b8a3ea150b3f7fad8fe9954bb7f5ae869ae4a7b81c75fbd6ddf3b584cef62c8

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

class Stack {
  """
  A simple Stack container class.
  """

  def initialize {
    """
    Initializes a new Stack.
    """

    @arr = []
  }

  def initialize: size {
    """
    @size Initial size of the new Stack.

    Initializes a new Stack with a given size.
    """

    @arr = Array new: size
  }

  def push: obj {
    """
    @obj Object to be pushed onto @self.

    Pushes a value onto the Stack.
    """

    @arr << obj
  }

  alias_method: '<< for: 'push:

  def pop {
    """
    @return Top-of-stack element.

    Pops the top-of-stack element from the Stack and returns it.
    """

    @arr remove_at: (size - 1)
  }

  def top {
    """
    @return The top-of-stack element.
    """

    @arr last
  }

  def size {
    """
    @return Size of the Stack.
    """

    @arr size
  }

  def empty? {
    """
    @return @true if empty, otherwise @false.

    Indicates, if the Stack is empty.
    """

    @arr empty?
  }

  def each: block {
    """
    @block @Block@ to be called with each element in @self.
    @return @self.

    Calls a given @Block@ with each element in @self, starting with the top of stack element.
    """

    @arr reverse each: block
  }
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fancy-0.4.0 lib/stack.fy