Sha256: 979a5e3dd93d062115e788b37e817334927c4b37e6eb02c593007b1b56ca6317

Contents?: true

Size: 1.38 KB

Versions: 5

Compression:

Stored size: 1.38 KB

Contents

class Usher
  # Various interfaces for Usher.
  module Interface

    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(:Sinatra,  File.join(File.dirname(__FILE__), 'interface', 'sinatra'))
    
    # Returns the appropriate interface class for a given name.
    # @param name [Symbol, String] The interface you wish to load. This can be `:rails20`, `:rails22`, `:rails23`, `:rack`, `:rails3` or  `:sinatra`
    def self.class_for(name)
      Usher::Interface.const_get(name.to_s.split(/_/).map{|e| e.capitalize}.join) or
        raise ArgumentError, "Interface #{name.inspect} doesn't exist."
    end

    # Returns the appropriate interface class for a given name.
    # @param name [Symbol, String] The interface you wish to load. This can be `:rails20`, `:rails22`, `:rails23`, `:rack`, `:rails3` or  `:sinatra`
    # @param args [Object] Any additional parameters the interface wishes to recieve
    # @return [Object] An intatiated interface
    def self.for(name, *args, &block)
      class_for(name).new(*args, &block)
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
usher-0.8.3 lib/usher/interface.rb
usher-0.8.2 lib/usher/interface.rb
usher-0.8.1 lib/usher/interface.rb
usher-0.8.0 lib/usher/interface.rb
usher-0.7.5 lib/usher/interface.rb