Class: Haml::Plugin

Inherits:
Object
  • Object
show all
Includes:
Util.av_template_class(:Handlers)::Compilable
Defined in:
lib/haml/template/plugin.rb

Overview

In Rails 3.1+, template handlers don't inherit from anything. In <= 3.0, they do. To avoid messy logic figuring this out, we just inherit from whatever the ERB handler does.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.call(template)

In Rails 3.1+, #call takes the place of #compile



38
39
40
# File 'lib/haml/template/plugin.rb', line 38

def self.call(template)
  new.compile(template)
end

Instance Method Details

#cache_fragment(block, name = {}, options = nil)



42
43
44
45
46
# File 'lib/haml/template/plugin.rb', line 42

def cache_fragment(block, name = {}, options = nil)
  @view.fragment_for(block, name, options) do
    eval("_hamlout.buffer", block.binding)
  end
end

#compile(template)



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/haml/template/plugin.rb', line 21

def compile(template)
  options = Haml::Template.options.dup

  # template is a template object in Rails >=2.1.0,
  # a source string previously
  if template.respond_to? :source
    # Template has a generic identifier in Rails >=3.0.0
    options[:filename] = template.respond_to?(:identifier) ? template.identifier : template.filename
    source = template.source
  else
    source = template
  end

  Haml::Engine.new(source, options).send(:precompiled_with_ambles, [])
end

#handles_encoding?Boolean

Returns:

  • (Boolean)


19
# File 'lib/haml/template/plugin.rb', line 19

def handles_encoding?; true; end