Sha256: 796dc6d6a551df42e6ba5cf6a3bee97bc8113a8f0f03f23b2b2121bcbd60c11d
Contents?: true
Size: 1.24 KB
Versions: 17
Compression:
Stored size: 1.24 KB
Contents
module Houston module Adapters class << self def each constants.each do |name| yield name, name_to_path(name) end end alias :[] :const_get def define_adapter_namespace(name) namespace = ::Module.new const_set name, namespace pathname = name_to_path(name) adapters_paths = File.join(File.dirname(__FILE__), "adapters/#{pathname}/*_adapter.rb") Dir[adapters_paths].each(&method(:require)) def namespace.adapters constants .select { |sym| sym =~ /Adapter$/ } .map { |sym| sym[/^.*(?=Adapter)/] } .sort_by { |name| name == "None" ? "" : name } end def namespace.adapter(name) const_get "#{name}Adapter" end def namespace.adapter?(name) adapters.map(&:downcase).member?(name.to_s.downcase) end end private def name_to_path(name) # Copied and simplified from ActiveSupport::Inflector.underscore name.to_s .gsub(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2') .gsub(/([a-z\d])([A-Z])/,'\1_\2') .downcase end end end end Dir[File.join(File.dirname(__FILE__), "adapters/*.rb")].each(&method(:require))
Version data entries
17 entries across 17 versions & 1 rubygems