Sha256: 15cdb21e8c8a6292b4c12b0116db783a93c938b1a4eb3411b397e3a16a93f4cc

Contents?: true

Size: 895 Bytes

Versions: 3

Compression:

Stored size: 895 Bytes

Contents

module Cl
  class << self
    def []=(key, object)
      registry[key.to_sym] = object
    end

    def [](key)
      key && registry[key.to_sym]
    end

    def cmds
      registry.values
    end

    def registry
      @registry ||= {}
    end
  end

  module Registry
    class << self
      def included(const)
        const.send(:extend, ClassMethods)
        const.send(:include, InstanceMethods)
      end
    end

    module ClassMethods
      attr_reader :registry_key

      def [](key)
        Cl[key.to_sym]
      end

      def register(key)
        Cl[key] = self
        @registry_key = key.to_sym
      end

      def underscore(string)
        string.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
        gsub(/([a-z\d])([A-Z])/,'\1_\2').
        downcase
      end
    end

    module InstanceMethods
      def registry_key
        self.class.registry_key
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cl-0.0.4 lib/cl/registry.rb
cl-0.0.3 lib/cl/registry.rb
cl-0.0.2 lib/cl/registry.rb