class Middleman::Renderers::HamlTemplate
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 :(
Public Class Methods
Source
# File lib/middleman-core/renderers/haml.rb, line 23 def initialize(*args, &block) super @context = @options[:context] end
Calls superclass method
Public Instance Methods
Source
# File 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