Class: Slim::Embedded Private

Inherits:
Filter
  • Object
show all
Defined in:
lib/slim/embedded.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Temple filter which processes embedded engines

Defined Under Namespace

Classes: ERBEngine, Engine, InterpolateTiltEngine, JavaScriptEngine, PrecompiledTiltEngine, RubyEngine, SassEngine, TagEngine, TiltEngine

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Filter

#on_slim_control, #on_slim_output, #on_slim_text

Constructor Details

#initialize(opts = {}) ⇒ Embedded

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Embedded



92
93
94
95
96
97
# File 'lib/slim/embedded.rb', line 92

def initialize(opts = {})
  super
  @engines = {}
  @enabled = normalize_engine_list(options[:enable_engines])
  @disabled = normalize_engine_list(options[:disable_engines])
end

Class Attribute Details

.enginesObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



66
67
68
# File 'lib/slim/embedded.rb', line 66

def engines
  @engines
end

Class Method Details

.create(name, options) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



84
85
86
87
# File 'lib/slim/embedded.rb', line 84

def create(name, options)
  constructor = engines[name] || raise(Temple::FilterError, "Embedded engine #{name} not found")
  constructor.call(options)
end

.register(name, klass, *option_filter) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Register embedded engine



74
75
76
77
78
79
80
81
82
# File 'lib/slim/embedded.rb', line 74

def register(name, klass, *option_filter)
  name = name.to_sym
  local_options = option_filter.last.respond_to?(:to_hash) ? option_filter.pop.to_hash : {}
  define_options(name, *option_filter)
  klass.define_options(name)
  engines[name.to_sym] = proc do |options|
    klass.new({}.update(options).delete_if {|k,v| !option_filter.include?(k) && k != name }.update(local_options))
  end
end

Instance Method Details

#enabled?(name) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



106
107
108
109
# File 'lib/slim/embedded.rb', line 106

def enabled?(name)
  (!@enabled || @enabled.include?(name)) &&
    (!@disabled || !@disabled.include?(name))
end

#on_slim_embedded(name, body) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Raises:

  • (Temple::FilterError)


99
100
101
102
103
104
# File 'lib/slim/embedded.rb', line 99

def on_slim_embedded(name, body)
  name = name.to_sym
  raise(Temple::FilterError, "Embedded engine #{name} is disabled") unless enabled?(name)
  @engines[name] ||= self.class.create(name, options)
  @engines[name].on_slim_embedded(name, body)
end