Haml::Template options in Merb

Written February 05, 2008 at 20:25 CET. Tagged Ruby, Haml and Merb.

I'm rewriting a toy project in Merb (0.5).

Though Merb supports Haml out of the box, I was unable to find a simple way of changing the Haml options, e.g. to wrap attributes in double-quotes instead of the default single-quotes.

In Rails, you can set them in the Haml::Template.options hash, but that doesn't work in Merb; that class is closely tied to Rails.

You can also pass options to the Haml::Engine constructor (which is what Template does). Merb doesn't seem to offer a simple way of doing this, but Ruby itself does.

Stick this in config/merb_init.rb:

# Haml template configuration

class Haml::Engine
  alias_method :old_initialize, :initialize
  def initialize(template, options = {})
    options.merge!(
      :attr_wrapper => %{"}
    )
    old_initialize(template, options)
  end
end

And that's it.