Haml est un langage de balisage utilisé majoritairement avec Ruby, qui décrit de manière simple et propre le HTML de n'importe quelle page web sans l'utilisation des traditionnelles lignes de code. Le langage est une alternative très populaire au langage de templates Rails (.erb) et permet d'intégrer du code en Ruby dans votre balisage.
Son but est de réduire le nombre de répétitions dans le balisage en fermant des balises pour vous en se basant sur l'indentation de votre code. Finalement, le balisage est bien structuré, ne contient pas de répétition, est logique et facile à lire.
Vous pouvez aussi utiliser Haml sur un projet indépendant de Ruby, en installant les gems de Haml et en le convertissant en html grâce aux commandes.
$ haml fichier_entree.haml fichier_sortie.html
```haml
/ -------------------------------------------
/ Indentation
/ -------------------------------------------
/
A cause de l'importance de l'indentation sur la manière dont votre code sera
converti, l'indentation doit être constante à travers votre document. Un
simple changement d'indentation entrainera une erreur. En général, on utilise
deux espaces, mais ce genre de décision sur l'indentation vous appartient, du
moment que vous vous y tenez.
/ -------------------------------------------
/ Commentaires
/ -------------------------------------------
/ Ceci est un commentaire en Haml.
/
Pour écrire un commentaire sur plusieurs lignes, indentez votre code
commenté en le commençant par un slash
-# Ceci est un commentaire silencieux, qui n'apparaîtra pas dans le fichier
/ -------------------------------------------
/ Eléments HTML
/ -------------------------------------------
/ Pour écrire vos balises, utilisez un pourcentage suivi du nom de votre balise
%body
%header
%nav
/ Remarquez qu'il n'y a aucunes balises fermées. Le code produira alors ceci
<body>
<header>
<nav></nav>
</header>
</body>
/ La balise div est l'élément par défaut, vous pouvez donc l'écrire comme ceci
.balise
/ Pour ajouter du contenu à votre balise, ajoutez le texte après sa déclaration
%h1 Titre contenu
/ Pour écrire du contenu sur plusieurs lignes, imbriquez le
%p
Ce paragraphe contient beaucoup de contenu qui pourrait
probablement tenir sur deux lignes séparées.
/
Vous pouvez utiliser des caractères html spéciaux en utilisant &=. Cela va
convertir les caractères comme &, /, : en leur équivalent HTML. Par exemple
%p
&= "Oui & oui"
/ Produira 'Oui & oui'
/ Vous pouvez écrire du contenu html sans qu'il soit converti en utilisant !=
%p
!= "Voici comment écrire une balise de paragraphe <p></p>"
/ Cela produira 'Voici comment écrire une balise de paragraphe <p></p>'
/ Une classe CSS peut être ajouté à votre balise en chainant le nom de la classe
%div.truc.machin
/ ou en utilisant un hash de Ruby
%div{:class => 'truc machin'}
/ Des attributs pour n'importe quelles balises peuvent être ajoutés au hash