class Haml::Plugin

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

def self.call(template)

In Rails 3.1+, #call takes the place of #compile
def self.call(template)
  new.compile(template)
end

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

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

def compile(template)

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

def handles_encoding?; true; end

def handles_encoding?; true; end