Haml

Uses your system voice; voice and rate in settings.

Snapshot

≈ 7 min read

Names in other languages

No names in other languages are held for this entry yet.

Article bodies are English and are not machine-translated. A name in another language is not a translation of the article.

Haml (HTML Abstraction Markup Language) is a templating system that is designed to avoid writing inline code in a web document and make the HTML cleaner. Similar to other template systems like eRuby, Haml also embeds some code that gets executed during runtime and generates HTML code in order to provide some dynamic content. In order to run Haml code, files need to have a extension. These files are similar to .erb or .eRuby files, which also help embed Ruby code while developing a web application. While parsing code comments, Haml uses the same rules as Ruby 1.9 or later. Haml understands only ASCII-compatible encodings, like UTF-8, but not UTF-16, or UTF-32, because these are not compatible with ASCII. Haml can be used at the command line, as a separate Ruby module, or in a Ruby on Rails application.

Haml (HTML Abstraction Markup Language) is a templating system that is designed to avoid writing inline code in a web document and make the HTML cleaner. Similar to other template systems like eRuby, Haml also embeds some code that gets executed during runtime and generates HTML code in order to provide some dynamic content. In order to run Haml code, files need to have a extension. These files are similar to .erb or .eRuby files, which also help embed Ruby code while developing a web application. While parsing code comments, Haml uses the same rules as Ruby 1.9 or later. Haml understands only ASCII-compatible encodings, like UTF-8, but not UTF-16, or UTF-32, because these are not compatible with ASCII. Haml can be used at the command line, as a separate Ruby module, or in a Ruby on Rails application. ==History== Haml was originally introduced by Hampton Catlin with its initial release in 2006 and his work was taken up by a few other people. His motive was to make HTML simpler, cleaner, and easier to use. Since 2006, it has been revised several times, and newer versions have been released. Until 2012, Natalie Weizenbaum was the primary maintainer of Haml, followed by Norman Clarke until 2015. Natalie worked on making Haml usable in Ruby applications, while the branding and design were done by Nick Walsh. Version 2.2.0 was released in July 20091 with support for Ruby 1.9 and Rails 2.0 or above. Version 3.0.0 was released in May 20101, adding support for Rails 3 and some performance improvements. The fourth major version broke compatibility with previous versions, only supporting Rails 3 and Ruby 1.8.7 or above, and marked the switch to semantic versioning. Several amendments like increasing the performance, fixing a few warnings, compatibility with latest versions of Rails, fixes in the documentation, and many more were made in the Haml 4 series. Version 5.0.0 was released in April 20171. It supports Ruby 2.0.0 or above and drops compatibility with Rails 3. A 'trace' option, which helps users to perform tracing on Haml template, has been added. ==Examples== Haml markup is similar to CSS in syntax. For example, Haml has the same dot . representation for classes as CSS does. ==="Hello, World!"=== ====Haml as a command-line tool==== The following are equivalent as HAML recognises CSS selectors: %p{:class => "sample", :id => "welcome"} Hello, World! %p.sample#welcome Hello, World! These render to the following HTML code: Hello, World! ====Haml as an add-on for Ruby on Rails==== Haml can be integrated into Ruby on Rails as a plugin. Similar to eRuby, Haml also can access local variables (declared within same file in Ruby code). This example uses a sample Ruby controller file. file: app/controllers/messages_controller.rb class MessagesController file: app/views/messages/index.html.haml welcome %p= @message This renders to: Hello, World! ====Haml as a Ruby module==== Haml is also capable of being used independently as a Ruby library. welcome = Haml::Engine.new("%p Hello, World!") welcome.render Output: Hello, World! Haml::Engine is a Haml class. ===Basic example=== Haml uses whitespace indentation (two spaces) for tag nesting and scope, replacing open-end tag pairs. The following example compares the syntaxes of Haml and eRuby (Embedded Ruby), alongside the HTML output. Key differences are: Haml doesn't have both opening and closing tags for each element like eRuby. eRuby syntax looks a lot like HTML and is thereby more HTML-like while Haml is more CSS-like. Haml uses indentation to nest tag elements whereas eRuby uses the same HTML representation. In Haml properties like class , id can be represented by . , # respectively instead of regular class and id keywords. Haml also uses % to indicate a HTML element instead of <> as in eRuby. ===Example with embedded Ruby code=== !!! %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 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 The above Haml would produce this XHTML: BoBlog BoBlog Bob's Blog Halloween Tuesday, October 31, 2006 Happy Halloween, glorious readers! I'm going to a party this evening... I'm very excited. New Rails Templating Engine Friday, August 11, 2006 There's a new Templating Engine out for Ruby on Rails. It's called Haml. All content copyright © Bob ==Implementations== The official implementation of Haml has been built for Ruby with plugins for Ruby on Rails and Merb, but the Ruby implementation also functions independently. Haml can be easily used along with other languages. Below is a list of languages in which Haml has implementations: Ruby: hamlit PHP: Fammel, pHAML, phamlp, phpHaml (PHP 5), HAML-TO-PHP (PHP 5), Multi target HAML (PHP 5.3) JavaScript: haml-js Python: HamlPy Common Lisp: cl-haml Dart: Hart Java: JHaml Lua: LuaHaml .NET: NHaml ASP.NET: MonoRail NHaml Perl: Text::Haml Scala: Scalate ==See also== BBCode eRuby Markaby Ruby Ruby on Rails YAML Sass – a similar system for CSS, also designed by Catlin. Website Meta Language – another template language with similar functionalities Web template – general concept of template to HTML expansion ==References== ==External links== Haml tutorial Learn Haml (basic) phpHaml, Haml implementation for PHP Haml Google Group Haml 1.0 , announcement on the official Ruby on Rails weblog

Text derived from https://en.wikipedia.org/w/index.php?oldid=1324866238 under CC BY-SA 4.0; modifications have been made.

References

  1. ↩Wikipedia release date (×3) · confidence 0.95 https://en.wikipedia.org/w/index.php?oldid=1324866238