Class: Middleman::Renderers::HamlTemplate

Inherits:
Tilt::HamlTemplate
  • Object
show all
Defined in:
middleman-core/lib/middleman-core/renderers/haml.rb

Overview

Haml precompiles filters before the scope is even available, thus making it impossible to pass our Middleman instance in. So we have to resort to heavy hackery :(

Instance Method Summary collapse

Constructor Details

#initialize(*args, &block) ⇒ HamlTemplate

Returns a new instance of HamlTemplate.



23
24
25
26
27
# File 'middleman-core/lib/middleman-core/renderers/haml.rb', line 23

def initialize(*args, &block)
  super

  @context = @options[:context] if @options.key?(:context)
end

Instance Method Details

#evaluate(scope, locals, &block) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'middleman-core/lib/middleman-core/renderers/haml.rb', line 31

def evaluate(scope, locals, &block)
  options = {}.merge!(@options).merge!(context: @context || scope)
  if options.include?(:outvar)
    options[:buffer] = options.delete(:outvar)
    options[:save_buffer] = true
  end
  if Object.const_defined?('::Haml::Template') # haml 6+
    @engine = ::Haml::Template.new(eval_file, line, options) { data }
  else
    options[:filename] = eval_file
    options[:line] = line
    @engine = ::Haml::Engine.new(data, options)
  end
  output = @engine.render(scope, locals, &block)

  output
end

#prepareObject



29
# File 'middleman-core/lib/middleman-core/renderers/haml.rb', line 29

def prepare; end