Hamlet is a template language whose goal is to reduce HTML syntax to the essential parts.

Syntax

<body>
    <p>Some paragraph.
    <ul data-attr=list>
        <li>Item 1
        <li>Item 2

That Hamlet snippet is equivalent to:

<body>
  <p>Some paragraph.</p>
  <ul data-attr="list">
    <li>Item 1</li>
    <li>Item 2</li>
  </ul>
</body>

see, it is just HTML! Designers love Hamlet because it is just HTML! Closing tags are inferred from whitespace.

Details

You can see the original hamlet templating langauge and the javascript port.

This Hamlet works on top of slim. Please see slim documentation. There is one important difference: hamlet always defers to HTML syntax. In slim you have:

p data-attr=foo Text
  | More Text

In hamlet you have:

<p data-attr=foo>Text
  More Text

Whitespace

This is currently a bit of a Slim Frankenstein, but I added the same syntax that hamlet.js uses to indicate whitespace: a closing bracket

<p>   White space to the left
  >   White space to the left again

Limitations

I just hacked this up the other day - let me know if there are any issues. After some more experience using Slim's syntax I plan on trying to reduce the total available syntax.