Differences from Ruby-flavoured HAML

Julia-flavoured HAML is quite close to Ruby-flavoured HAML. Below we describe the differences between the syntax for the latter and the former.

Attributes use named tuple syntax

In Ruby-flavoured HAML the attributes are specified in a Ruby-like syntax. In the Julia-flavoured version, we use the same syntax as for named tuples. Examples:

- link = "https://youtu.be/dQw4w9WgXcQ"
- attr = :href
%a(href=link) Click me
%a(attr=>link) Click me

Just like in the Ruby-flavoured version, nested attributes are joined by - and underscores in keys are replaced by dashes:

%a(href="/posts", data=(author_id=123, category=7)) Posts By Author

If you need another special character in the attribute, it with Symbol(...) =>. For example, the attribute xml:lang:

%html(xmlns = "http://www.w3.org/1999/xhtml", Symbol("xml:lang") => "en", lang="en")

Helper methods are usually macros

Many of the Ruby-flavoured helper methods are not supported (yet). The ones that are (e.g., @surround) are macros. In particular, note that you should use - and not = as in Ruby:

- @surround("(", ")") do
  %span Hello

Interpolation expects Julia syntax

Use $ for interpolation in literal text instead of #{...}. Example:

- quality = "scruptious"
%p This is $quality cake!
Note

If you need to combine this with keyword parameters to a template file, you'll need double quotes:

%p This is $($quality) cake!

Helper macros/methods may need to be imported

If you use @haml_str or HAML.includehaml the HAML code runs in a module you own. If you want to use macros or helper methods (e.g., @include or @surround then you need to either use using HAML or import them.