Sha256: d3d9ff25b6f0b5121a2572f8e10b2277f37df12b103222f5f6ebe8019562cae9

Contents?: true

Size: 601 Bytes

Versions: 3

Compression:

Stored size: 601 Bytes

Contents

module BqFactory
  class Registory
    include Enumerable

    attr_reader :name

    def initialize(name)
      @name = name
    end

    def find(name)
      if registered?(name)
        @items[name]
      else
        raise ArgumentError.new, "#{@name} not registered: #{name}"
      end
    end
    alias :[] :find

    def clear
      items.clear
    end

    def each(&block)
      items.values.uniq.each(&block)
    end

    def registered?(name)
      items.key?(name)
    end

    def register(name, item)
      items[name] = item
    end

    def items
      @items ||= {}
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bq_factory-0.2.0 lib/bq_factory/registory.rb
bq_factory-0.1.1 lib/bq_factory/registory.rb
bq_factory-0.1.0 lib/bq_factory/registory.rb