Haml (HTML Abstraction Markup Language) ist eine unter der MIT-Lizenz veröffentlichte vereinfachte Auszeichnungssprache, die benutzt wird, um auf klare und einfache Art das XHTML eines Web-Dokuments zu beschreiben, ohne dabei mittels Inline-Codierung ausführbaren Programmcode hineinmischen zu müssen. Es wurde entwickelt, um viele der Schwächen traditioneller Template-Mechanismen zu vermeiden und um Markup-Sprache möglichst elegant zu machen. Haml fungiert als Ersatz für Inline-Template-Mechanismen, wie sie bei PHP, JSP, RHTML oder ASP üblich sind. Haml vermeidet die Notwendigkeit, XHTML explizit in Templates zu codieren, weil es selbst eine Beschreibung für XHTML mit einigem Code für dynamischen Inhalt ist.

Haml
Logo
Dateiendung: .haml
Entwickelt von: Nathan Weizenbaum, Hampton Catlin
Aktuelle Version 6.3.0[1]
(10. Dezember 2023)
Art: Auszeichnungssprache
haml.info

Zum Umfang von Haml gehörte mit Sass auch ein Analogon zu CSS. Heute werden aber Sass und Haml getrennt entwickelt, versioniert und ausgeliefert.[2]

Prinzipien Bearbeiten

Auszeichnungssprachen sollten schön sein
Auszeichnungssprachen sollten nicht nur einfach als Werkzeug benutzt werden, um Webbrowser dazu zu bringen, eine Seite in der Art darzustellen, wie der Autor sie dargestellt haben möchte. Diese Darstellung ist nicht das einzige, was die Leute sehen müssen. Sie müssen die Auszeichnungssprache sehen, ändern und verstehen. Deshalb sollte die Auszeichnungssprache genauso benutzerfreundlichen und angenehm wie das im Webbrowser dargestellte Ergebnis sein.
Auszeichnungssprachen sollten DRY sein
XHTML enthält viele Wiederholungen. Die meisten Elemente müssen zweimal angegeben werden, einmal vor und einmal nach ihrem Inhalt. ERB fügt sogar noch mehr Wiederholung und unnötige Zeichen hinzu. Haml vermeidet dies alles, indem es sich auf die Einrückung und nicht auf den Text verlässt, um zu bestimmen, wo Elemente und Codeblöcke beginnen und enden. Die führt nicht nur zu kleineren Templates, es macht den Code auch lesbarer und „sauberer“.
Auszeichnungssprachen sollten korrekt eingerückt werden
Eine der großen Schwierigkeiten mit traditionellen Template-Sprachen ist, dass sie nicht nur darauf verzichten, die Verwendung einer konsequenten und konsistenten Einrückung zu ermutigen, sondern dass sie dieser sogar oft im Wege stehen. Es ist oft schwierig oder unmöglich, eine brauchbare Einrückung anzuwenden. Dies führt oft zu verwirrendem und unlesbarem XHTML. Haml formatiert die Tags so, dass sie immer sauber eingerückt sind und die darunter liegende Struktur des Dokuments wiedergeben.
Die XHTML-Struktur sollte klar sein
XML und XHTML sind Formate, die für die Idee des strukturierten Dokuments ins Leben gerufen wurden. Diese Struktur ist in diesen Auszeichnungssprachen wiedergegeben und sollte auch in gleicher Weise in einer Meta-Auszeichnungssprache wie Haml zu sehen sein. Weil Hamls Logik auf der Einrückung der Unterelemente basiert, wird diese Struktur auf natürliche Weise bewahrt, wobei sie für menschliche Leser viel einfacher und logischer zu erfassen ist.

Nachteile Bearbeiten

  • In Haml hat Leerraum eine essentielle Bedeutung. Haml verlässt sich auf konsistente Einrückungen. Tabulator- und Leerzeichen müssen über das ganze Dokument hinweg konsistent eingesetzt werden.
  • Es gibt (noch) keine WYSIWYG-Editoren für Haml, während solche in großer Zahl für XHTML und HTML verfügbar sind. Aber die wachsende Gemeinschaft der Haml-Anwender hat ein Bündel von Zusätzen zu vielen gängigen integrierten Entwicklungsumgebungen, wie zum Beispiel Eclipse (einschließlich populärer davon abgeleiteter Werkzeuge wie RadRails oder Aptana), jEdit, NetBeans und Editoren wie TextMate, Emacs oder Vim, hervorgebracht. Diese erlauben es Entwicklern, Haml in einer Umgebung zu editieren, die die Einrückungen und die Syntax berücksichtigt.

Beispiel Bearbeiten

Anmerkung: Man beachte bitte, dass dieses Beispiel nicht zwingend den heutigen Entwicklungsstand von Haml wiedergibt.

!!!
%html{ :xmlns => "http://www.w3.org/1999/xhtml", :lang => "en", "xml:lang" => "en"}
  %head
    %title BoBlog
    %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"}
    = stylesheet_link_tag 'main'
  %body
    #header
      %h1 BoBlog
      %h2 Bob's Blog
    #content
      - @entries.each do |entry|
        .entry
          %h3.title= entry.title
          %p.date= entry.posted.strftime("%A, %B %d, %Y")
          %p.body= entry.body
    #footer
      %p
        All content copyright © Bob

Der obige Haml-Text sollte das folgende XHTML ergeben:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
  <head>
    <title>BoBlog</title>
    <meta content='text/html; charset=utf-8' http-equiv='Content-Type' />
    <link href="/stylesheets/main.css" media="screen" rel="Stylesheet" type="text/css" />
  </head>
  <body>
    <div id='header'>
      <h1>BoBlog</h1>
      <h2>Bob's Blog</h2>
    </div>
    <div id='content'>
      <div class='entry'>
        <h3 class='title'>Halloween</h3>
        <p class='date'>Tuesday, October 31, 2006</p>
        <p class='body'>
          Happy Halloween, glorious readers! I'm going to a party this evening... I'm very excited.
        </p>
      </div>
      <div class='entry'>
        <h3 class='title'>New Rails Templating Engine</h3>
        <p class='date'>Friday, August 11, 2006</p>
        <p class='body'>
          There's a very cool new Templating Engine out for Ruby on Rails. It's called Haml.
        </p>
      </div>
    </div>
    <div id='footer'>
      <p>
        All content copyright © Bob
      </p>
    </div>
  </body>
</html>

Implementierungen Bearbeiten

Die offizielle Haml-Implementierung wurde für Ruby mit Plugins für Ruby on Rails und Merb entwickelt, aber die Ruby-Implementierung funktioniert auch unabhängig (ohne Rails und ohne Merb).

Es existieren auch Implementierungen in anderen Programmiersprachen:

Entwicklung Bearbeiten

Haml wurde im Mai 2006 von Hampton Catlin erfunden. Er entwickelt zusammen mit Nathan Weizenbaum die Codebasis weiter.

Siehe auch Bearbeiten

Weblinks Bearbeiten

Einzelnachweise Bearbeiten

  1. Release 6.3.0. 10. Dezember 2023 (abgerufen am 19. Dezember 2023).
  2. Haml and Sass are Split. In: Posts about Haml. Archiviert vom Original (nicht mehr online verfügbar) am 27. Dezember 2011; abgerufen am 7. Januar 2012.  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/nex-3.com