class Slim::EmbeddedEngine

Temple filter which processes embedded engines @api private

Attributes

engines[R]

Public Class Methods

register(name, klass, *option_filter) click to toggle source

Register embedded engine

@param [String] name Name of the engine @param [Class] klass Engine class @param option_filter List of options to pass to engine.

Last argument can be default option hash.
# File lib/slim/embedded_engine.rb, line 75
def register(name, klass, *option_filter)
  local_options = Hash === option_filter.last ? option_filter.pop : nil
  @engines[name.to_s] = [klass, option_filter, local_options]
end

Public Instance Methods

on_slim_embedded(name, body) click to toggle source
# File lib/slim/embedded_engine.rb, line 81
def on_slim_embedded(name, body)
  name = name.to_s
  raise "Embedded engine #{name} is disabled" if (options[:enable_engines] && !options[:enable_engines].include?(name)) ||
                                                 (options[:disable_engines] && options[:disable_engines].include?(name))
  engine, option_filter, local_options = self.class.engines[name] || raise("Embedded engine #{name} not found")
  filtered_options = Hash[*option_filter.select {|k| options.include?(k) }.map {|k| [k, options[k]] }.flatten]
  engine.new(Temple::ImmutableHash.new(local_options, filtered_options)).on_slim_embedded(name, body)
end