Sha256: ccb12b5049a6400d59a946729b320d3e9ea254db509fc19f59d66dd3061487c2

Contents?: true

Size: 1.29 KB

Versions: 2

Compression:

Stored size: 1.29 KB

Contents

require 'singleton'
require 'sugar-high/kind_of'

module CanTango
  module Registry
    class Base
      module InstanceMethods
        attr_writer   :default, :available
        attr_accessor :registered

        def types= *types
          @types = types.select {|t| t.is_a?(Class) }
        end

        def types
          @types ||= [Symbol, String]
          @types
        end

        def clean!
          @registered = []
        end

        def reset!
          @registered = default
        end

        alias_method :clear!, :clean!

        def default!
          @registered = default
        end

        def register *list
          registered << list.select_kinds_of(*types)
          @registered.flat_uniq!
        end

        alias_method :<<, :register

        def [] index
          registered[index]
        end

        def registered
          @registered ||= default
        end

        def registered? label
          registered.map(&:to_s).include? label.to_s
        end

        def default
          @default ||= []
        end
        
        def valid? label
          return available.include?(label) if respond_to?(:available) && !available.empty?
          true
        end

        def available
          []
        end
      end
      include InstanceMethods
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cantango-config-0.2.1 lib/cantango/registry/base.rb
cantango-config-0.2.0 lib/cantango/registry/base.rb