Haml

Haml

Infobox_Software
name = Haml

developer = Hampton Catlin, Nathan Weizenbaum
latest_release_version= 2.0.2
latest_release_date = release_date|2008|07|29
operating_system = Cross-platform
genre = Template Engine
license = MIT License
website = http://haml.hamptoncatlin.com/

Haml (XHTML Abstraction Markup Language) is a markup language that is used to cleanly and simply describe the XHTML of any web document without the use of traditional inline coding. It’s designed to address many of the flaws in traditional templating engines, as well as making markup as elegant as it can be. Haml functions as a replacement for inline page templating systems such as PHP, RHTML, and ASP. However, Haml avoids the need for explicitly coding XHTML into the template, because it is itself a description of the XHTML, with some code to generate dynamic content.

Haml's equivalent for CSS is Sass, which comes with Haml.

Principles

; Markup should be beautiful: Markup should not be used merely as a tool to get browsers to render a page the way its author wants it rendered. The rendering isn't the only thing people have to see; they have to see, modify, and understand the markup as well. Thus, the markup should be just as user-friendly and pleasant as the rendered result.; Markup should be DRY: XHTML involves major repetition. Every element is named twice: once before its content and once after. ERB adds even more repetition and unnecessary characters. Haml avoids all of this by relying on indentation, not text, to determine where elements and blocks of code begin and end. Not only does this result in smaller templates, it makes the code much cleaner to look at.; Markup should be well-indented: One of the major problems with traditional templating languages is that not only do they not encourage well-indented code, they actively make it challenging, or even impossible, to write. The result is confusing, unreadable XHTML. Haml formats tags so they are well indented and reflect the underlying structure of the document.; XHTML structure should be clear: XML and XHTML are formats built upon the idea of a structured document. That structure is reflected in their markup, and it should likewise be reflected in meta-markup such as Haml. Because Haml's logic is based on indentation of child elements, this structure is naturally preserved, making the document much easier and more logical for mere humans to read.

Disadvantages

* Haml is "whitespace active", and relies on consistent spacing for each indent level. Tabs or spaces must be maintained consistently throughout the document.
* There are no WYSIWYG Haml editors, whereas there are many XHTML and HTML editors. However, the growing community of Haml users has released syntax bundle addons to many popular programming IDEs, such as Eclipse (which includes the spinoff IDEs RadRails and Aptana), jEdit, NetBeans, and editors like TextMate and vim. This allows developers to edit Haml in an environment that is aware of the indenting rules and syntax.

Example

Note: This is a simple preview example and may not reflect the current version of the language.

!!!%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

The above Haml would produce this XHTML:

BoBlog

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 very cool new Templating Engine out for Ruby on Rails. It's called Haml.

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.

There are also implementations in other languages:

* [http://phphaml.sourceforge.net phpHaml (PHP5)]
* [http://phammable.org Phammable (PHP5)]
* [http://andrewpeters.net/2007/12/19/introducing-nhaml-an-aspnet-mvc-view-engine/ NHaml (.NET)]
* [http://weblogs.asp.net/mirvodasergey/archive/2008/06/02/introducing-monorail-nhaml.aspx MonoRail NHaml (ASP.NET)]
* [http://drupal.org/project/haml Drupal filter module]

Development

Haml was invented in May 2006 by Hampton Catlin who continues to work on the implementation and the ideals behind Haml. However, Nathan Weizenbaum is responsible for much of the recent growth and maturation of the Haml codebase.

ee also

* BBCode
* eRuby
* Markaby
* Ruby
* Ruby on Rails
* Web template
* pHAML
* YAML

External links

* [http://haml.hamptoncatlin.com Official Haml Website]
* [http://github.com/nex3/haml/tree/master HAML source code repository (Git)]
* [http://phphaml.sourceforge.net phpHaml (Haml implementation for PHP 5)]
* [http://unspace.ca/discover/haml Introductory Article on Haml] on Unspace.ca
* [http://groups-beta.google.com/group/haml?hl=en Haml Google Group]
* [http://weblog.rubyonrails.org/2007/1/19/haml-1-0 Haml 1.0 announcement on official Ruby on Rails weblog]
* [http://nex-3.com/posts/76-haml-2-0 Haml 2.0 announcement on Nathan Weizenbaum's blog]
* [http://podcast.rubyonrails.org/programs/1/episodes/hampton_catlin Interview with Haml creator on official Rails podcast]


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • Haml — Тип Язык разметки Разработчик Hampton Catlin, Nathan Weizenbaum Написана на Ruby (официальная версия) Последняя версия 3.1.2 …   Википедия

  • HAML — Développeurs Hampton Catlin, Nathan Weizenbaum Dernière version …   Wikipédia en Français

  • Haml — Développeurs Hampton Catlin, Nathan Weizenbaum Dernière version (3.1.3 …   Wikipédia en Français

  • Haml — Vorlage:Infobox Dateiformat/Wartung/MIME fehltVorlage:Infobox Dateiformat/Wartung/MagischeZahl fehltVorlage:Infobox Dateiformat/Wartung/Standard fehlt Haml Dateiendung …   Deutsch Wikipedia

  • HAML — ICAO Airportcode f. Masslo (Ethiopia) …   Acronyms

  • HAML — ICAO Airportcode f. Masslo ( Ethiopia) …   Acronyms von A bis Z

  • Haml. — abbr. Hamlet …   Dictionary of abbreviations

  • haml — (A.) [ ﻞﻤﺣ ] 1. taşıma. 2. gebelik. 3. yükleme …   Osmanli Türkçesİ sözlüğü

  • HAML — Yük. * Sırtına yük alıp getirmek. * Kadının karnındaki çocuk. * İsnad. Yüklenme …   Yeni Lügat Türkçe Sözlük

  • vaz' -ı haml — [ ﻞﻤﺣ ﻊﺽو ] doğum …   Osmanli Türkçesİ sözlüğü

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”