Sha256: 1fe1d1cad0c9933cf0a84f48c434493e39de31b178ad34a91f9c4c3dcfa11dba

Contents?: true

Size: 750 Bytes

Versions: 6

Compression:

Stored size: 750 Bytes

Contents

module Xing
  module Services
    module ClassRegistry
      module ClassMethods
        def registry
          @registry ||= {}
        end

        def register(name, klass=self)
          raise "Invalid registration: #{name} exists" if registrar.registry.has_key?(name) && registrar.registry[name] != klass
          registrar.registry[name] = klass
        end

        def registry_key(klass)
          registrar.registry.select{ |key, val| val == klass}.keys.first
        end

        def registry_get(name)
          registrar.registry.fetch(name)
        end
      end

      def self.included(base)
        base.define_singleton_method(:registrar) do
          base
        end
        base.extend(ClassMethods)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
xing-backend-1.0.0.pre.beta lib/xing/services/class_registry.rb
xing-backend-0.0.25 lib/xing/services/class_registry.rb
xing-backend-0.0.23 lib/xing/services/class_registry.rb
xing-backend-0.0.22 lib/xing/services/class_registry.rb
xing-backend-0.0.21 lib/xing/services/class_registry.rb
xing-backend-0.0.20 lib/xing/services/class_registry.rb