Sha256: 6bc13823e510ea44da65f5badb13b1e1e18a95b5cb557b220852a00ea9f2c018

Contents?: true

Size: 1.42 KB

Versions: 17

Compression:

Stored size: 1.42 KB

Contents

module Mack
  module Rendering
    module Engine
      # A registry used to store which Mack::Rendering::Type objects can use which Mack::Rendering::Engine objects.
      # 
      # Example:
      #   Mack::Rendering::Engine::Registry.register(:bar, :sass)
      #   render(:bar, "my_file") will now get run through Mack::Rendering::Type::Bar and Mack::Rendering::Engine::Sass
      class Registry
        include Singleton
        
        # Returns all the engines registered with the system.
        attr_reader :engines
      
        def initialize
          @engines = {
            :action => [:erubis, :builder],
            :template => [:erubis, :builder],
            :partial => [:erubis, :builder],
            :layout => [:erubis],
            :xml => [:builder, :erubis]
          }
        end
        
        # Registers an engine to a type.
        # 
        # Example:
        # Mack::Rendering::Engine::Registry.register(:action, :haml)
        def register(type, engine)
          type = type.to_sym
          if self.engines.has_key?(type)
            self.engines[type].insert(0, engine)
          else
            self.engines[type] = [engine]
          end
        end
      
        class << self
        
          def method_missing(sym, *args)
            Mack::Rendering::Engine::Registry.instance.send(sym, *args)
          end
        
        end
      end # Registry
    end # Engines
  end # Rendering
end # Mack

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
mack-0.6.0.1 lib/rendering/engine/registry.rb
mack-0.6.0 lib/rendering/engine/registry.rb
mack-0.6.1.1 lib/mack/rendering/engine/registry.rb
mack-0.6.1.2 lib/mack/rendering/engine/registry.rb
mack-0.6.1 lib/mack/rendering/engine/registry.rb
mack-0.7.1.1 lib/mack/rendering/engine/registry.rb
mack-0.7.0 lib/mack/rendering/engine/registry.rb
mack-0.7.0.1 lib/mack/rendering/engine/registry.rb
mack-0.7.1 lib/mack/rendering/engine/registry.rb
mack-0.8.0.100 lib/mack/rendering/engine/registry.rb
mack-0.8.0.101 lib/mack/rendering/engine/registry.rb
mack-0.8.0.2 lib/mack/rendering/engine/registry.rb
mack-0.8.1 lib/mack/rendering/engine/registry.rb
mack-0.8.2 lib/mack/rendering/engine/registry.rb
mack-0.8.0 lib/mack/rendering/engine/registry.rb
mack-0.8.3.1 lib/mack/rendering/engine/registry.rb
mack-0.8.3 lib/mack/rendering/engine/registry.rb