Sha256: 277c07656f3d5fcc4cbcffdf618424721d51f3e0702934630ab88ccafa3d0fe5
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
houston-core-0.5.0.beta1 | app/adapters/houston/adapters.rb |