Sha256: d28edd9f9b5e4ca25e5c71dd36e46d03f343db5d38771cf0fddd528917863d9d

Contents?: true

Size: 730 Bytes

Versions: 3

Compression:

Stored size: 730 Bytes

Contents

# frozen_string_literal: true

module Basic101

  class ForStack

    def initialize
      @stack = []
    end

    def empty?
      @stack.empty?
    end

    def push(statement)
      if has_reference?(statement.reference)
        raise DuplicateReferenceInForStack
      end
      @stack.push statement
    end

    def pop
      @stack.pop
    end

    def top
      @stack.last
    end

    def delete_reference(reference)
      @stack.reject! do |statement|
        statement.reference == reference
      end
    end

    def [](reference)
      @stack.find do |statement|
        statement.reference == reference
      end
    end

    private

    def has_reference?(reference)
      !!self[reference]
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
basic101-1.0.2 lib/basic101/for_stack.rb
basic101-1.0.1 lib/basic101/for_stack.rb
basic101-1.0.0 lib/basic101/for_stack.rb