Articulo de referencia

Haml

"},"programming_language":{"wt":"[[Ruby (programming language)|Ruby]]"},"latest release version":{"wt":"{{wikidata|property|preferred|references|edit|Q1573599|P348|P548=Q2804309...

Haml ( HTML Abstraction Markup Language ) es un sistema de plantillas diseñado para evitar escribir código en línea en un documento web y lograr un HTML más limpio. Al igual que otros sistemas de plantillas como eRuby , Haml también incorpora código que se ejecuta durante la ejecución y genera código HTML para proporcionar contenido dinámico. Para ejecutar código Haml, los archivos deben tener la extensión .haml . Estos archivos son similares a los archivos .erb o .eRuby, que también permiten incorporar código Ruby durante el desarrollo de una aplicación web .

Al analizar los comentarios del código, Haml utiliza las mismas reglas que Ruby 1.9 o posterior. Haml solo entiende codificaciones compatibles con ASCII , como UTF-8 , pero no UTF-16 ni UTF-32 , ya que estas no son compatibles con ASCII . [ 3 ] [ 4 ]

Haml se puede utilizar desde la línea de comandos , como un módulo Ruby independiente o en una aplicación Ruby on Rails .

Historia

Haml fue presentado originalmente por Hampton Catlin con su lanzamiento inicial en 2006 y su trabajo fue continuado por otras personas. [ 5 ] Su motivación era hacer que HTML fuera más simple, limpio y fácil de usar. Desde 2006, ha sido revisado varias veces y se han lanzado versiones más recientes. Hasta 2012, Natalie Weizenbaum fue la principal responsable del mantenimiento de Haml, seguida por Norman Clarke hasta 2015. [ 5 ] Natalie trabajó para que Haml fuera utilizable en aplicaciones Ruby , mientras que el diseño y la marca fueron realizados por Nick Walsh. [ 5 ]

La versión 2.2.0 se lanzó en julio de 2009 con soporte para Ruby 1.9 y Rails 2.0 o superior. [ 6 ] La versión 3.0.0 se lanzó en mayo de 2010, agregando soporte para Rails 3 y algunas mejoras de rendimiento. La cuarta versión principal rompió la compatibilidad con versiones anteriores, solo soportando Rails 3 y Ruby 1.8.7 o superior, y marcó el cambio al versionado semántico. Varias enmiendas como aumentar el rendimiento, corregir algunas advertencias, compatibilidad con las últimas versiones de Rails, correcciones en la documentación y muchas más se hicieron en la serie Haml 4. [ 6 ] La versión 5.0.0 se lanzó en abril de 2017. Soporta Ruby 2.0.0 o superior y elimina la compatibilidad con Rails 3. [ 6 ] Se ha agregado una opción ' trace ' [ 7 ] , que ayuda a los usuarios a realizar el rastreo en la plantilla Haml.

Ejemplos

El lenguaje de marcado Haml es similar a CSS en su sintaxis. Por ejemplo, Haml utiliza la misma .representación de puntos para las clases que CSS.

"¡Hola Mundo!"

Los siguientes son equivalentes, ya que HAML reconoce los selectores CSS :

%p { :class => "sample" , :id => "welcome" } ¡Hola, mundo! 
%p .sample #bienvenido ¡Hola, mundo! 

Estos se renderizan al siguiente código HTML :

< p class = "sample" id = " welcome" > ¡ Hola, mundo! </p>

Haml como complemento para Ruby on Rails

Haml se puede integrar en Ruby on Rails como un plugin. Al igual que eRuby , Haml también puede acceder a variables locales (declaradas en el mismo archivo de código Ruby). Este ejemplo utiliza un archivo de controlador Ruby de muestra. [ 8 ]

  • archivo:app/controllers/messages_controller.rb
    clase MessagesController < ApplicationController def index @message = "Hola, mundo!" end end
  • archivo:app/views/messages/index.html.haml
    #bienvenido %p = @mensaje

Esto se representa como:

< div id = " welcome " > <p> ¡ Hola , mundo ! </p> </div>

Haml como módulo Ruby

Haml también puede utilizarse de forma independiente como una biblioteca de Ruby .

bienvenido = Haml :: Engine.new ( " %p ¡ Hola , mundo! " ) bienvenido.render

Producción:

<p> ¡ Hola , mundo ! </p>

Haml::Engine es una clase Haml.

Ejemplo básico

Haml utiliza la indentación con espacios en blanco (dos espacios) para el anidamiento y el alcance de las etiquetas, reemplazando los pares de etiquetas abiertas. El siguiente ejemplo compara las sintaxis de Haml y eRuby (Ruby integrado), junto con la salida HTML.