Sha256: bd53bf1fc58b33e169cb52be02e06e9f8dadac222bc4f401b026ec7b3c147f46

Contents?: true

Size: 1.29 KB

Versions: 15

Compression:

Stored size: 1.29 KB

Contents

module Merb
  module Global
    module Providers
      def self.included(mod) #:nodoc:
        mod.module_eval do
          @@providers = {}
          @@providers_classes = {}
          ##
          # Creates a provider and/or returns already created one
          #
          # ==== Parames
          # provider<~to_s,~to_sym>:: A name of provider
          #
          # ==== Returns
          # provider<Provider>:: A new provider
          def self.[](provider)
            unless @@providers.include? provider.to_sym
              if @@providers_classes[provider.to_sym]
                @@providers[provider.to_sym] =
                  @@providers_classes[provider.to_sym].new
              else
                require "merb_global/#{self.name.split("::").last.snake_case}/#{provider.to_s}"
                @@providers[provider.to_sym] = self.const_get(provider.camel_case).new
              end
            end
            @@providers[provider.to_sym]
          end
          # Registers the class under the given name
          # 
          # ==== Parameters
          # name<~to_sym>:: Name under which it is registered
          # klass<Class>:: Class of the provider
          def self.register(name, klass)
            @@providers_classes[name.to_sym] = klass
          end
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 3 rubygems

Version Path
lastobelus-merb_global-0.0.10 lib/merb_global/providers.rb
lastobelus-merb_global-0.0.11 lib/merb_global/providers.rb
lastobelus-merb_global-0.0.12 lib/merb_global/providers.rb
lastobelus-merb_global-0.0.13 lib/merb_global/providers.rb
lastobelus-merb_global-0.0.14 lib/merb_global/providers.rb
lastobelus-merb_global-0.0.8 lib/merb_global/providers.rb
lastobelus-merb_global-0.0.9 lib/merb_global/providers.rb
emipair-merb_global-0.0.12 lib/merb_global/providers.rb
emipair-merb_global-0.0.11 lib/merb_global/providers.rb
emipair-merb_global-0.0.10 lib/merb_global/providers.rb
emipair-merb_global-0.0.9 lib/merb_global/providers.rb
emipair-merb_global-0.0.3 lib/merb_global/providers.rb
emipair-merb_global-0.0.2 lib/merb_global/providers.rb
emipair-merb_global-0.0.1 lib/merb_global/providers.rb
merb_global-0.0.7 lib/merb_global/providers.rb