Sha256: db7a56017ed9a9362ce4fc0acca89ce632cd050b44e1576352b0fa6992ec69f5

Contents?: true

Size: 1.15 KB

Versions: 3

Compression:

Stored size: 1.15 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: -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

3 entries across 3 versions & 1 rubygems

Version Path
fancy-0.10.0 lib/stack.fy
fancy-0.9.0 lib/stack.fy
fancy-0.8.0 lib/stack.fy