lib/usher/interface.rb in usher-0.7.1 vs lib/usher/interface.rb in usher-0.7.2
- old
+ new
@@ -1,31 +1,21 @@
class Usher
+ # Various interfaces for Usher.
module Interface
- InterfaceRegistry = {}
+ autoload(:Email, File.join(File.dirname(__FILE__), 'interface', 'email'))
+ autoload(:Merb, File.join(File.dirname(__FILE__), 'interface', 'merb'))
+ autoload(:Rails20, File.join(File.dirname(__FILE__), 'interface', 'rails20'))
+ autoload(:Rails22, File.join(File.dirname(__FILE__), 'interface', 'rails22'))
+ autoload(:Rails23, File.join(File.dirname(__FILE__), 'interface', 'rails23'))
+ autoload(:Rack, File.join(File.dirname(__FILE__), 'interface', 'rack'))
+ autoload(:Rails3, File.join(File.dirname(__FILE__), 'interface', 'rails3'))
+ autoload(:Text, File.join(File.dirname(__FILE__), 'interface', 'text'))
+ autoload(:Sinatra, File.join(File.dirname(__FILE__), 'interface', 'sinatra'))
- def self.register(name, cls)
- InterfaceRegistry[name] = cls
- end
-
- register(:email, File.join(File.dirname(__FILE__), 'interface', 'email'))
- register(:merb, File.join(File.dirname(__FILE__), 'interface', 'merb'))
- register(:rails20, File.join(File.dirname(__FILE__), 'interface', 'rails20'))
- register(:rails22, File.join(File.dirname(__FILE__), 'interface', 'rails22'))
- register(:rails23, File.join(File.dirname(__FILE__), 'interface', 'rails23'))
- register(:rack, File.join(File.dirname(__FILE__), 'interface', 'rack'))
- register(:rails3, File.join(File.dirname(__FILE__), 'interface', 'rails3'))
- register(:text, File.join(File.dirname(__FILE__), 'interface', 'text'))
- register(:sinatra, File.join(File.dirname(__FILE__), 'interface', 'sinatra'))
-
def self.class_for(name)
- name = name.to_sym
- if InterfaceRegistry[name]
- require InterfaceRegistry[name]
- Usher::Interface.const_get(File.basename(InterfaceRegistry[name]).to_s.split(/_/).map{|e| e.capitalize}.join)
- else
- raise ArgumentError, "Interface #{name.inspect} doesn't exist. Choose one of: #{InterfaceRegistry.keys.inspect}"
- end
+ Usher::Interface.const_get(name.to_s.split(/_/).map{|e| e.capitalize}.join) or
+ raise ArgumentError, "Interface #{name.inspect} doesn't exist."
end
# Usher::Interface.for(:rack, &block)
def self.for(name, *args, &block)
class_for(name).new(*args, &block)