Haml

lenguaje de programación

Haml (en inglés, HTML Abstraction Markup Language) es un lenguaje de marcado ligero que se usa para describir el XHTML de un documento web sin emplear el código embebido tradicional. Está diseñado para solucionar varios problemas de los motores de plantillas tradicionales y también para ser un lenguaje de marcado tan elegante como sea posible. Haml funciona como reemplazo de sistemas de plantillas de páginas embebidas como PHP, RHTML y ASP. Sin embargo, Haml elimina la necesidad de escribir XHTML explícito dentro de la plantilla, por ser en sí una descripción de XHTML, más algo de código para generar contenido dinámico.

Haml
Información general
Tipo de programa Motor de plantillas
Desarrollador Nathan Weizenbaum, Hampton Catlin
Licencia Licencia MIT
Versiones
Última versión estable 4.0.7 ( 10 de agosto de 2015)
Enlaces

El equivalente de Haml para CSS es Sass.

Principios

editar
El marcado debería ser bonito
El marcado no debería usarse solamente como una herramienta para lograr que los navegadores muestren una página como el autor lo desee. El renderizado no es lo único que la gente tiene que ver; también se tiene que ver, modificar y entender el marcado. Por tanto, este debería ser tan amigable y placentero como el resultado del renderizado.
El marcado no debería repetirse
XHTML implica grandes repeticiones. La mayoría de los elementos deben ser nombrados dos veces: una vez antes de su contenido y otra después. ERB agrega aún más repetición y caracteres innecesarios. Haml evita todo esto recurriendo al sangrado en vez del texto para determinar dónde empiezan y terminan los elementos y los bloques de código. Esto no solo da como resultado plantillas más compactas sino que además hace el código mucho más limpio a la vista.
El marcado debería tener buen sangrado
Uno de los mayores problemas de los lenguajes de plantillas tradicionales es que no solo no fomentan el código bien sangrado sino que encima lo hacen difícil o incluso imposible de escribir. El resultado es un XHTML confuso e ilegible. Haml formatea las etiquetas de manera que todas estén bien sangradas y reflejen la estructura subyacente del documento.
La estructura de XHTML debería ser clara
XML y XHTML son formatos fundados sobre la idea de un documento estructurado. Tal estructura se refleja en su marcado, y asimismo debería reflejarse en metamarcado como Haml. Debido a que la lógica de Haml se basa en el sangrado de elementos hijos, esta estructura se preserva naturalmente, lo que hace al documento mucho más fácil y lógico de leer por simples humanos.

Ejemplo

editar

Nota: este es un simple ejemplo de muestra y puede no reflejar la versión actual del lenguaje.

!!!
%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"}
    %link{"rel" => "stylesheet", "href" => "main.css", "type" => "text/css"}
  %body
    #header
      %h1 BoBlog
      %h2 Blog de Bob
    #content
      - @entries.each do |entry|
        .entry
          %h3.title= entry.title
          %p.date= entry.posted.strftime("%A %d de %B de %Y")
          %p.body= entry.body
    #footer
      %p Copyright © 2012 Bob. Algunos derechos reservados.

El Haml de arriba produce este XHTML:

<!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>Blog de Bob</h2>
    </div>
    <div id='content'>
      <div class='entry'>
        <h3 class='title'>Halloween</h3>
        <p class='date'>martes 31 de octubre de 2006</p>
        <p class='body'>
          ¡Feliz Halloween, gloriosos lectores! Esta noche iré a una fiesta... estoy muy emocionado.
        </p>
      </div>
      <div class='entry'>
        <h3 class='title'>Nuevo motor de plantillas para Rails</h3>
        <p class='date'>viernes 11 de agosto de  2006</p>
        <p class='body'>
          Acaba de salir un motor de plantillas muy bueno para Ruby on Rails. Se llama Haml.
        </p>
      </div>
    </div>
    <div id='footer'>
      <p>
        Copyright © 2012 Bob. Algunos derechos reservados.
      </p>
    </div>
  </body>
</html>

Implementaciones

editar

La implementación oficial de Haml está hecha para el lenguaje de programación Ruby con extensiones para Ruby on Rails y Merb, no obstante la implementación de Ruby también funciona de manera independiente.

Desarrollo

editar

Haml fue inventado en mayo de 2006 por Hampton Catlin. Sin embargo, Nathan Weizenbaum es el responsable de la madurez del código de Haml.

Véase también

editar

Enlaces externos

editar