What is Hamstache?

Hamstache combines the awesome power of Mustache’s logic-less templates with the clean elegance of the Haml templating language.

Usage

Add Hamstache to your Gemfile:

gem "hamstache"

And run bundle install to ensure it’s added to your apps dependencies. Now you can create your view using a mix of Haml and Mustache syntax. For example to serve a request to WelcomeController#index we’d have the following in app/views/welcome/index.html.hamstache:

%h1 Welcome!
%p Here comes a list:
%ul
  {{#items}}
    %li {{ name }}
  {{/ items}}

Next you need to define your Hamstache template, for this example the template is expected to be found at app/hamstaches/demo/index.rb and could look like the following:

class Welcome::Index < Hamstache::Template
  def items
    [{ :name => "Item 1"},
    { :name => "Item 2"},
    { :name => "Item 3"}]
  end
end

Now a request to WelcomeController#index would result in the following HTML output:

<h1>Welcome!</h1>
<p>Here comes a list:</p>
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>

For more details on what is possible, read up on the API docs for HAML and Mustache respectively.