Haml
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 | ||
Principios
- 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
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
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
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
- Portal:Software libre. Contenido relacionado con Software libre.
- BBCode
- Ruby
- Ruby on Rails
- YAML
Enlaces externos
- Sitio web oficial de Haml
- Repositorio de código fuente de Haml (Git)
- Artículo de introducción a Haml en Unspace.ca (link Obsoleto) - versión archivada en web.archive.org
- Grupo de Google sobre Haml
- Anuncio de Haml 1.0 en el blog oficial de Ruby on Rails
- Anuncio de Haml 2.0 en el blog de Nathan Weizenbaum
- Entrevista con el creador de Haml en el podcast oficial de Ruby on Rails
- Entrevista con Nathan Weizenbaum y Chris Eppstein, mantenedores de Haml, Sass y Compass, en el podcast The Changelog
- Wiki de Ruby on Rails: Usando Haml con Ruby on Rails