CINXE.COM
Haml - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Haml - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"4e75cb3b-dac2-400b-a01d-849171164a39","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Haml","wgTitle":"Haml","wgCurRevisionId":1240772102,"wgRevisionId":1240772102,"wgArticleId":11674306,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles with short description","Short description is different from Wikidata","Articles with a promotional tone from July 2017","All articles with a promotional tone","Ruby (programming language)","Template engines","Free computer libraries","Software using the MIT license","Lightweight markup languages"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Haml","wgRelevantArticleId":11674306,"wgIsProbablyEditable":true, "wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":10000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q1573599","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics": true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups", "ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.cite.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Haml - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Haml"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Haml&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Haml"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Haml rootpage-Haml skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Haml" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Haml" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Haml" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Haml" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-History" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#History"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>History</span> </div> </a> <ul id="toc-History-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Examples" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Examples"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Examples</span> </div> </a> <button aria-controls="toc-Examples-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Examples subsection</span> </button> <ul id="toc-Examples-sublist" class="vector-toc-list"> <li id="toc-"Hello,_World!"" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#"Hello,_World!""> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>"Hello, World!"</span> </div> </a> <ul id="toc-"Hello,_World!"-sublist" class="vector-toc-list"> <li id="toc-Haml_as_a_command-line_tool" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Haml_as_a_command-line_tool"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1.1</span> <span>Haml as a command-line tool</span> </div> </a> <ul id="toc-Haml_as_a_command-line_tool-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Haml_as_an_add-on_for_Ruby_on_Rails" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Haml_as_an_add-on_for_Ruby_on_Rails"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1.2</span> <span>Haml as an add-on for Ruby on Rails</span> </div> </a> <ul id="toc-Haml_as_an_add-on_for_Ruby_on_Rails-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Haml_as_a_Ruby_module" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Haml_as_a_Ruby_module"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1.3</span> <span>Haml as a Ruby module</span> </div> </a> <ul id="toc-Haml_as_a_Ruby_module-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Basic_example" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Basic_example"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Basic example</span> </div> </a> <ul id="toc-Basic_example-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Example_with_embedded_Ruby_code" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Example_with_embedded_Ruby_code"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>Example with embedded Ruby code</span> </div> </a> <ul id="toc-Example_with_embedded_Ruby_code-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Implementations" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Implementations"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Implementations</span> </div> </a> <ul id="toc-Implementations-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Haml</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 8 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-8" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">8 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Haml" title="Haml – German" lang="de" hreflang="de" data-title="Haml" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Haml" title="Haml – Spanish" lang="es" hreflang="es" data-title="Haml" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Haml" title="Haml – French" lang="fr" hreflang="fr" data-title="Haml" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%B9%E0%B4%BE%E0%B4%AE%E0%B5%BD" title="ഹാമൽ – Malayalam" lang="ml" hreflang="ml" data-title="ഹാമൽ" data-language-autonym="മലയാളം" data-language-local-name="Malayalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Haml" title="Haml – Polish" lang="pl" hreflang="pl" data-title="Haml" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/Haml" title="Haml – Russian" lang="ru" hreflang="ru" data-title="Haml" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/Haml" title="Haml – Ukrainian" lang="uk" hreflang="uk" data-title="Haml" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/Haml" title="Haml – Chinese" lang="zh" hreflang="zh" data-title="Haml" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1573599#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Haml" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Haml" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Haml"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Haml&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Haml&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Haml"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Haml&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Haml&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Haml" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Haml" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Haml&oldid=1240772102" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Haml&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Haml&id=1240772102&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHaml"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHaml"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Haml&action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Haml&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1573599" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Computer code templating system</div> <style data-mw-deduplicate="TemplateStyles:r1251242444">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="box-Promotional plainlinks metadata ambox ambox-content ambox-Advert" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/40px-Ambox_important.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/60px-Ambox_important.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/80px-Ambox_important.svg.png 2x" data-file-width="40" data-file-height="40" /></span></span></div></td><td class="mbox-text"><div class="mbox-text-span">This article <b>contains <a href="/wiki/Wikipedia:What_Wikipedia_is_not#Wikipedia_is_not_a_soapbox_or_means_of_promotion" title="Wikipedia:What Wikipedia is not">promotional content</a></b>.<span class="hide-when-compact"> Please help <a class="external text" href="https://en.wikipedia.org/w/index.php?title=Haml&action=edit">improve it</a> by removing <a href="/wiki/Wikipedia:Spam" title="Wikipedia:Spam">promotional language</a> and inappropriate <a href="/wiki/Wikipedia:External_links#Advertising_and_conflicts_of_interest" title="Wikipedia:External links">external links</a>, and by adding encyclopedic text written from a <a href="/wiki/Wikipedia:Neutral_point_of_view" title="Wikipedia:Neutral point of view">neutral point of view</a>.</span> <span class="date-container"><i>(<span class="date">July 2017</span>)</i></span><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <style data-mw-deduplicate="TemplateStyles:r1257001546">.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme) div:not(.notheme){background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table tr{display:table-row!important}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}</style><table class="infobox vevent"><caption class="infobox-title summary">Haml</caption><tbody><tr><th scope="row" class="infobox-label"><a href="/wiki/Programming_paradigm" title="Programming paradigm">Paradigm</a></th><td class="infobox-data"><a href="/wiki/Template_engine_(web)" class="mw-redirect" title="Template engine (web)">Template engine</a></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Software_design" title="Software design">Designed by</a></th><td class="infobox-data"><a href="/wiki/Hampton_Catlin" class="mw-redirect" title="Hampton Catlin">Hampton Catlin</a></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Software_developer" class="mw-redirect" title="Software developer">Developers</a></th><td class="infobox-data organiser"><a rel="nofollow" class="external text" href="https://github.com/nex3">Natalie Weizenbaum</a> (past), <a rel="nofollow" class="external text" href="https://github.com/norman">Norman Clarke</a>, <a rel="nofollow" class="external text" href="https://github.com/mattwildig">Matt Wildig</a>, <a rel="nofollow" class="external text" href="https://github.com/amatsuda">Akira Matsuda</a>, <a rel="nofollow" class="external text" href="https://github.com/teeparham">Tee Parham</a><sup id="cite_ref-github_1-0" class="reference"><a href="#cite_note-github-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></td></tr><tr><td colspan="2" class="infobox-full-data"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1257001546"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="/wiki/Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;">6.3.0<sup id="cite_ref-wikidata-30eae55cc242ffc54ba5d86bd8b3b77569b3f845-v18_2-0" class="reference"><a href="#cite_note-wikidata-30eae55cc242ffc54ba5d86bd8b3b77569b3f845-v18-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> <span class="mw-valign-text-top" typeof="mw:File/Frameless"><a href="https://www.wikidata.org/wiki/Q1573599?uselang=en#P348" title="Edit this on Wikidata"><img alt="Edit this on Wikidata" src="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span> / 10 December 2023<span class="noprint">; 11 months ago</span><span style="display:none"> (<span class="bday dtstart published updated">10 December 2023</span>)</span></div></td></tr><tr style="display:none"><td colspan="2"> </td></tr><tr><th scope="row" class="infobox-label">Implementation language</th><td class="infobox-data"><a href="/wiki/Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Operating_system" title="Operating system">OS</a></th><td class="infobox-data"><a href="/wiki/Cross-platform" class="mw-redirect" title="Cross-platform">Cross-platform</a></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Software_license" title="Software license">License</a></th><td class="infobox-data"><a href="/wiki/MIT_License" title="MIT License">MIT License</a> and <a rel="nofollow" class="external text" href="https://unspace.ca/">Unspace Interactive</a><sup id="cite_ref-github_1-1" class="reference"><a href="#cite_note-github-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Filename_extension" title="Filename extension">Filename extensions</a></th><td class="infobox-data">.haml</td></tr><tr><th scope="row" class="infobox-label">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="http://haml.info/">haml<wbr />.info</a></span></td></tr></tbody></table> <p><b>Haml</b> (<b>HTML Abstraction Markup Language</b>) is a <a href="/wiki/Web_template_system" title="Web template system">templating system</a> that is designed to avoid writing inline code in a <a href="/wiki/Web_document" class="mw-redirect" title="Web document">web document</a> and make the <a href="/wiki/HTML" title="HTML">HTML</a> cleaner. Similar to other template systems like <a href="/wiki/ERuby" title="ERuby">eRuby</a>, 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 <style data-mw-deduplicate="TemplateStyles:r886049734">.mw-parser-output .monospaced{font-family:monospace,monospace}</style><span class="monospaced">.haml</span> extension. These files are similar to .erb or .eRuby files, which also help embed <a href="/wiki/Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a> code while developing a <a href="/wiki/Web_application" title="Web application">web application</a>. </p><p>While parsing code comments, Haml uses the same rules as Ruby 1.9 or later. Haml understands only <a href="/wiki/ASCII" title="ASCII">ASCII</a>-compatible encodings, like <a href="/wiki/UTF-8" title="UTF-8">UTF-8</a>, but not <a href="/wiki/UTF-16" title="UTF-16">UTF-16</a>, or <a href="/wiki/UTF-32" title="UTF-32">UTF-32</a>, because these are not compatible with <a href="/wiki/ASCII" title="ASCII">ASCII</a>.<sup id="cite_ref-Encoding_3-0" class="reference"><a href="#cite_note-Encoding-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-UTF_Encodings_4-0" class="reference"><a href="#cite_note-UTF_Encodings-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> </p><p>Haml can be used at the <a href="/wiki/Command-line_interface" title="Command-line interface">command line</a>, as a separate Ruby module, or in a <a href="/wiki/Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a> application. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="History">History</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haml&action=edit&section=1" title="Edit section: History"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Haml was originally introduced by <a href="/wiki/Hampton_Catlin" class="mw-redirect" title="Hampton Catlin">Hampton Catlin</a> with its initial release in 2006 and his work was taken up by a few other people.<sup id="cite_ref-about_page_5-0" class="reference"><a href="#cite_note-about_page-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> His motive was to make <a href="/wiki/HTML" title="HTML">HTML</a> 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. <sup id="cite_ref-about_page_5-1" class="reference"><a href="#cite_note-about_page-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> Natalie worked on making Haml usable in <a href="/wiki/Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a> applications, while the branding and design were done by Nick Walsh.<sup id="cite_ref-about_page_5-2" class="reference"><a href="#cite_note-about_page-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> </p><p>Version 2.2.0 was released in July 2009 with support for Ruby 1.9 and <a href="/wiki/Ruby_on_Rails" title="Ruby on Rails">Rails</a> 2.0 or above.<sup id="cite_ref-changelog_6-0" class="reference"><a href="#cite_note-changelog-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Version 3.0.0 was released in May 2010, 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.<sup id="cite_ref-changelog_6-1" class="reference"><a href="#cite_note-changelog-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Version 5.0.0 was released in April 2017. It supports Ruby 2.0.0 or above and drops compatibility with Rails 3.<sup id="cite_ref-changelog_6-2" class="reference"><a href="#cite_note-changelog-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> A '<a href="/wiki/Tracing_(software)" title="Tracing (software)">trace</a>'<sup id="cite_ref-Trace_7-0" class="reference"><a href="#cite_note-Trace-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> option, which helps users to perform tracing on Haml template, has been added. </p> <div class="mw-heading mw-heading2"><h2 id="Examples">Examples</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haml&action=edit&section=2" title="Edit section: Examples"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Haml markup is similar to <a href="/wiki/Cascading_Style_Sheets" class="mw-redirect" title="Cascading Style Sheets">CSS</a> in syntax. For example, Haml has the same dot <code>.</code> representation for classes as CSS does. </p> <div class="mw-heading mw-heading3"><h3 id=""Hello,_World!""><span id=".22Hello.2C_World.21.22"></span>"Hello, World!"</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haml&action=edit&section=3" title="Edit section: "Hello, World!""><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading4"><h4 id="Haml_as_a_command-line_tool">Haml as a <a href="/wiki/Command-line_interface" title="Command-line interface">command-line tool</a></h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haml&action=edit&section=4" title="Edit section: Haml as a command-line tool"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The following are equivalent as HAML recognises <a href="/wiki/Cascading_Style_Sheets#Selector" class="mw-redirect" title="Cascading Style Sheets">CSS selectors</a>: </p> <div class="mw-highlight mw-highlight-lang-haml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt">%p</span><span class="p">{</span><span class="ss">:class</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="s2">"sample"</span><span class="p">,</span><span class="w"> </span><span class="ss">:id</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="s2">"welcome"</span><span class="p">}</span> Hello, World! </pre></div> <div class="mw-highlight mw-highlight-lang-haml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt">%p</span><span class="nc">.sample</span><span class="nf">#welcome</span> Hello, World! </pre></div> <p>These render to the following <a href="/wiki/HTML" title="HTML">HTML</a> code: </p> <div class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><pre><span></span><span class="p"><</span><span class="nt">p</span> <span class="na">class</span><span class="o">=</span><span class="s">"sample"</span> <span class="na">id</span><span class="o">=</span><span class="s">"welcome"</span><span class="p">></span>Hello, World!<span class="p"></</span><span class="nt">p</span><span class="p">></span> </pre></div> <div class="mw-heading mw-heading4"><h4 id="Haml_as_an_add-on_for_Ruby_on_Rails">Haml as an add-on for <a href="/wiki/Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a></h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haml&action=edit&section=5" title="Edit section: Haml as an add-on for Ruby on Rails"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Haml can be integrated into <a href="/wiki/Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a> as a plugin. Similar to <a href="/wiki/ERuby" title="ERuby">eRuby</a>, Haml also can access local variables (declared within same file in Ruby code). This example uses a sample Ruby controller file.<sup id="cite_ref-Using_Haml_8-0" class="reference"><a href="#cite_note-Using_Haml-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> </p> <ul><li>file: <code>app/controllers/messages_controller.rb</code><div class="mw-highlight mw-highlight-lang-ruby mw-content-ltr" dir="ltr"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MessagesController</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="no">ApplicationController</span> <span class="w"> </span><span class="k">def</span><span class="w"> </span><span class="nf">index</span> <span class="w"> </span><span class="vi">@message</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"Hello, World!"</span> <span class="w"> </span><span class="k">end</span> <span class="k">end</span> </pre></div></li> <li>file: <code>app/views/messages/index.html.haml</code><div class="mw-highlight mw-highlight-lang-haml mw-content-ltr" dir="ltr"><pre><span></span><span class="nf">#welcome</span> <span class="w"> </span><span class="nt">%p</span><span class="p">=</span><span class="w"> </span><span class="vi">@message</span> </pre></div></li></ul> <p>This renders to: </p> <div class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><pre><span></span><span class="p"><</span><span class="nt">div</span> <span class="na">id</span><span class="o">=</span><span class="s">"welcome"</span><span class="p">></span> <span class="p"><</span><span class="nt">p</span><span class="p">></span>Hello, World!<span class="p"></</span><span class="nt">p</span><span class="p">></span> <span class="p"></</span><span class="nt">div</span><span class="p">></span> </pre></div> <div class="mw-heading mw-heading4"><h4 id="Haml_as_a_Ruby_module">Haml as a Ruby module</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haml&action=edit&section=6" title="Edit section: Haml as a Ruby module"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Haml is also capable of being used independently as a Ruby <a href="/wiki/Library_(computing)" title="Library (computing)">library</a>. </p> <div class="mw-highlight mw-highlight-lang-ruby mw-content-ltr" dir="ltr"><pre><span></span><span class="n">welcome</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">Haml</span><span class="o">::</span><span class="no">Engine</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s2">"%p Hello, World!"</span><span class="p">)</span> <span class="n">welcome</span><span class="o">.</span><span class="n">render</span> </pre></div> <p>Output: </p> <div class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><pre><span></span><span class="p"><</span><span class="nt">p</span><span class="p">></span>Hello, World!<span class="p"></</span><span class="nt">p</span><span class="p">></span> </pre></div> <p><a rel="nofollow" class="external text" href="http://haml.info/docs/yardoc/Haml/Engine.html">Haml::Engine</a> is a Haml class. </p> <div class="mw-heading mw-heading3"><h3 id="Basic_example">Basic example</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haml&action=edit&section=7" title="Edit section: Basic example"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>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 <a href="/wiki/ERuby" title="ERuby">eRuby</a> (Embedded Ruby), alongside the HTML output. </p> <table> <tbody><tr> <th>Haml </th> <th>ERB </th> <th>HTML </th></tr> <tr valign="top"> <td><div class="mw-highlight mw-highlight-lang-haml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt">%div</span><span class="nc">.category</span> <span class="w"> </span><span class="nt">%div</span><span class="nc">.recipes</span> <span class="w"> </span><span class="nt">%h1</span><span class="p">=</span><span class="w"> </span><span class="n">recipe</span><span class="o">.</span><span class="n">name</span> <span class="w"> </span><span class="nt">%h3</span><span class="p">=</span><span class="w"> </span><span class="n">recipe</span><span class="o">.</span><span class="n">category</span> <span class="w"> </span><span class="nt">%div</span> <span class="w"> </span><span class="nt">%h4</span><span class="p">=</span><span class="w"> </span><span class="n">recipe</span><span class="o">.</span><span class="n">description</span> </pre></div> </td> <td><div class="mw-highlight mw-highlight-lang-html+erb mw-content-ltr" dir="ltr"><pre><span></span><span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">"category"</span><span class="p">></span> <span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">"recipes"</span><span class="p">></span> <span class="p"><</span><span class="nt">h1</span><span class="p">></span><span class="cp"><%=</span><span class="w"> </span><span class="n">recipe</span><span class="o">.</span><span class="n">name</span><span class="w"> </span><span class="cp">%></span><span class="p"></</span><span class="nt">h1</span><span class="p">></span> <span class="p"><</span><span class="nt">h3</span><span class="p">></span><span class="cp"><%=</span><span class="w"> </span><span class="n">recipe</span><span class="o">.</span><span class="n">category</span><span class="w"> </span><span class="cp">%></span><span class="p"></</span><span class="nt">h3</span><span class="p">></span> <span class="p"></</span><span class="nt">div</span><span class="p">></span> <span class="p"><</span><span class="nt">div</span><span class="p">></span> <span class="p"><</span><span class="nt">h4</span><span class="p">></span><span class="cp"><%=</span><span class="w"> </span><span class="n">recipe</span><span class="o">.</span><span class="n">description</span><span class="w"> </span><span class="cp">%></span><span class="p"></</span><span class="nt">h4</span><span class="p">></span> <span class="p"></</span><span class="nt">div</span><span class="p">></span> <span class="p"></</span><span class="nt">div</span><span class="p">></span> </pre></div> </td> <td><div class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><pre><span></span><span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">"category"</span><span class="p">></span> <span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">"recipes"</span><span class="p">></span> <span class="p"><</span><span class="nt">h1</span><span class="p">></span>Cookie<span class="p"></</span><span class="nt">h1</span><span class="p">></span> <span class="p"><</span><span class="nt">h3</span><span class="p">></span>Desserts<span class="p"></</span><span class="nt">h3</span><span class="p">></span> <span class="p"></</span><span class="nt">div</span><span class="p">></span> <span class="p"><</span><span class="nt">div</span><span class="p">></span> <span class="p"><</span><span class="nt">h4</span><span class="p">></span>Made from dough and sugar. Usually circular in shape and has about 400 calories.<span class="p"></</span><span class="nt">h4</span><span class="p">></span> <span class="p"></</span><span class="nt">div</span><span class="p">></span> <span class="p"></</span><span class="nt">div</span><span class="p">></span> </pre></div> </td></tr></tbody></table> <p>Key differences are: </p> <ul><li>Haml doesn't have both opening and closing tags for each element like <a href="/wiki/ERuby" title="ERuby">eRuby</a>.</li> <li><a href="/wiki/ERuby" title="ERuby">eRuby</a> syntax looks a lot like <a href="/wiki/HTML" title="HTML">HTML</a> and is thereby more HTML-like while Haml is more <a href="/wiki/Cascading_Style_Sheets" class="mw-redirect" title="Cascading Style Sheets">CSS</a>-like.</li> <li>Haml uses <a href="/wiki/Indent_style" class="mw-redirect" title="Indent style">indentation</a> to nest tag elements whereas eRuby uses the same HTML representation.</li> <li>In Haml properties like <code>class</code>, <code>id</code> can be represented by <code>.</code>, <code>#</code> respectively instead of regular <code>class</code> and <code>id</code> keywords. Haml also uses <code>%</code> to indicate a HTML element instead of <code><></code> as in eRuby.</li></ul> <div class="mw-heading mw-heading3"><h3 id="Example_with_embedded_Ruby_code">Example with embedded Ruby code</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haml&action=edit&section=8" title="Edit section: Example with embedded Ruby code"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-highlight mw-highlight-lang-haml mw-content-ltr" dir="ltr"><pre><span></span><span class="nn">!!!</span> <span class="nt">%html</span><span class="p">{</span><span class="w"> </span><span class="ss">:xmlns</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="s2">"http://www.w3.org/1999/xhtml"</span><span class="p">,</span><span class="w"> </span><span class="ss">:lang</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="s2">"en"</span><span class="p">,</span><span class="w"> </span><span class="s2">"xml:lang"</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="s2">"en"</span><span class="p">}</span> <span class="w"> </span><span class="nt">%head</span> <span class="w"> </span><span class="nt">%title</span> BoBlog <span class="w"> </span><span class="nt">%meta</span><span class="p">{</span><span class="s2">"http-equiv"</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="s2">"Content-Type"</span><span class="p">,</span><span class="w"> </span><span class="ss">:content</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="s2">"text/html; charset=utf-8"</span><span class="p">}</span> <span class="w"> </span><span class="nt">%link</span><span class="p">{</span><span class="s2">"rel"</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="s2">"stylesheet"</span><span class="p">,</span><span class="w"> </span><span class="s2">"href"</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="s2">"main.css"</span><span class="p">,</span><span class="w"> </span><span class="s2">"type"</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="s2">"text/css"</span><span class="p">}</span> <span class="w"> </span><span class="nt">%body</span> <span class="w"> </span><span class="nf">#header</span> <span class="w"> </span><span class="nt">%h1</span> BoBlog <span class="w"> </span><span class="nt">%h2</span> Bob's Blog <span class="w"> </span><span class="nf">#content</span> <span class="w"> </span><span class="p">-</span><span class="w"> </span><span class="vi">@entries</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="o">|</span><span class="n">entry</span><span class="o">|</span> <span class="w"> </span><span class="nc">.entry</span> <span class="w"> </span><span class="nt">%h3</span><span class="nc">.title</span><span class="p">=</span><span class="w"> </span><span class="n">entry</span><span class="o">.</span><span class="n">title</span> <span class="w"> </span><span class="nt">%p</span><span class="nc">.date</span><span class="p">=</span><span class="w"> </span><span class="n">entry</span><span class="o">.</span><span class="n">posted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%A, %B %d, %Y"</span><span class="p">)</span> <span class="w"> </span><span class="nt">%p</span><span class="nc">.body</span><span class="p">=</span><span class="w"> </span><span class="n">entry</span><span class="o">.</span><span class="n">body</span> <span class="w"> </span><span class="nf">#footer</span> <span class="w"> </span><span class="nt">%p</span> <span class="w"> </span>All content copyright © Bob </pre></div> <p>The above Haml would produce this <a href="/wiki/XHTML" title="XHTML">XHTML</a>: </p> <div class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><pre><span></span><span class="cp"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></span> <span class="p"><</span><span class="nt">html</span> <span class="na">lang</span><span class="o">=</span><span class="s">'en'</span> <span class="na">xml:lang</span><span class="o">=</span><span class="s">'en'</span> <span class="na">xmlns</span><span class="o">=</span><span class="s">'http://www.w3.org/1999/xhtml'</span><span class="p">></span> <span class="p"><</span><span class="nt">head</span><span class="p">></span> <span class="p"><</span><span class="nt">title</span><span class="p">></span>BoBlog<span class="p"></</span><span class="nt">title</span><span class="p">></span> <span class="p"><</span><span class="nt">meta</span> <span class="na">content</span><span class="o">=</span><span class="s">'text/html; charset=utf-8'</span> <span class="na">http-equiv</span><span class="o">=</span><span class="s">'Content-Type'</span> <span class="p">/></span> <span class="p"><</span><span class="nt">link</span> <span class="na">href</span><span class="o">=</span><span class="s">"/stylesheets/main.css"</span> <span class="na">media</span><span class="o">=</span><span class="s">"screen"</span> <span class="na">rel</span><span class="o">=</span><span class="s">"Stylesheet"</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/css"</span> <span class="p">/></span> <span class="p"></</span><span class="nt">head</span><span class="p">></span> <span class="p"><</span><span class="nt">body</span><span class="p">></span> <span class="p"><</span><span class="nt">div</span> <span class="na">id</span><span class="o">=</span><span class="s">'header'</span><span class="p">></span> <span class="p"><</span><span class="nt">h1</span><span class="p">></span>BoBlog<span class="p"></</span><span class="nt">h1</span><span class="p">></span> <span class="p"><</span><span class="nt">h2</span><span class="p">></span>Bob's Blog<span class="p"></</span><span class="nt">h2</span><span class="p">></span> <span class="p"></</span><span class="nt">div</span><span class="p">></span> <span class="p"><</span><span class="nt">div</span> <span class="na">id</span><span class="o">=</span><span class="s">'content'</span><span class="p">></span> <span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">'entry'</span><span class="p">></span> <span class="p"><</span><span class="nt">h3</span> <span class="na">class</span><span class="o">=</span><span class="s">'title'</span><span class="p">></span>Halloween<span class="p"></</span><span class="nt">h3</span><span class="p">></span> <span class="p"><</span><span class="nt">p</span> <span class="na">class</span><span class="o">=</span><span class="s">'date'</span><span class="p">></span>Tuesday, October 31, 2006<span class="p"></</span><span class="nt">p</span><span class="p">></span> <span class="p"><</span><span class="nt">p</span> <span class="na">class</span><span class="o">=</span><span class="s">'body'</span><span class="p">></span> Happy Halloween, glorious readers! I'm going to a party this evening... I'm very excited. <span class="p"></</span><span class="nt">p</span><span class="p">></span> <span class="p"></</span><span class="nt">div</span><span class="p">></span> <span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">'entry'</span><span class="p">></span> <span class="p"><</span><span class="nt">h3</span> <span class="na">class</span><span class="o">=</span><span class="s">'title'</span><span class="p">></span>New Rails Templating Engine<span class="p"></</span><span class="nt">h3</span><span class="p">></span> <span class="p"><</span><span class="nt">p</span> <span class="na">class</span><span class="o">=</span><span class="s">'date'</span><span class="p">></span>Friday, August 11, 2006<span class="p"></</span><span class="nt">p</span><span class="p">></span> <span class="p"><</span><span class="nt">p</span> <span class="na">class</span><span class="o">=</span><span class="s">'body'</span><span class="p">></span> There's a new Templating Engine out for Ruby on Rails. It's called Haml. <span class="p"></</span><span class="nt">p</span><span class="p">></span> <span class="p"></</span><span class="nt">div</span><span class="p">></span> <span class="p"></</span><span class="nt">div</span><span class="p">></span> <span class="p"><</span><span class="nt">div</span> <span class="na">id</span><span class="o">=</span><span class="s">'footer'</span><span class="p">></span> <span class="p"><</span><span class="nt">p</span><span class="p">></span> All content copyright © Bob <span class="p"></</span><span class="nt">p</span><span class="p">></span> <span class="p"></</span><span class="nt">div</span><span class="p">></span> <span class="p"></</span><span class="nt">body</span><span class="p">></span> <span class="p"></</span><span class="nt">html</span><span class="p">></span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Implementations">Implementations</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haml&action=edit&section=9" title="Edit section: Implementations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The official implementation of Haml has been built for <a href="/wiki/Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a> with plugins for <a href="/wiki/Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a> and <a href="/wiki/Merb" title="Merb">Merb</a>, 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: </p> <ul><li>Ruby: <a rel="nofollow" class="external text" href="https://github.com/k0kubun/hamlit">hamlit</a></li> <li>PHP: <a rel="nofollow" class="external text" href="https://web.archive.org/web/20100303124319/http://wiki.github.com/dxw/Fammel/">Fammel</a>, <a rel="nofollow" class="external text" href="http://phaml.sourceforge.net/">pHAML</a>, <a rel="nofollow" class="external text" href="https://code.google.com/p/phamlp/">phamlp</a>, <a rel="nofollow" class="external text" href="http://phphaml.sourceforge.net">phpHaml</a> (PHP 5), <a rel="nofollow" class="external text" href="https://web.archive.org/web/20110417115303/http://haml-to-php.com/">HAML-TO-PHP</a> (PHP 5), <a rel="nofollow" class="external text" href="https://github.com/arnaud-lb/MtHaml">Multi target HAML</a> (PHP 5.3)</li> <li>Javascript: <a rel="nofollow" class="external text" href="https://github.com/creationix/haml-js">haml-js</a></li> <li>Python: <a rel="nofollow" class="external text" href="https://github.com/jessemiller/HamlPy">HamlPy</a></li> <li>Common Lisp: <a rel="nofollow" class="external text" href="https://github.com/Unspeakable/cl-haml">cl-haml</a></li> <li>Dart: <a rel="nofollow" class="external text" href="https://github.com/lvivski/hart">Hart</a></li> <li>Java: <a rel="nofollow" class="external text" href="https://github.com/raymyers/JHaml">JHaml</a></li> <li>Lua: <a rel="nofollow" class="external text" href="https://github.com/norman/lua-haml">LuaHaml</a></li> <li>.NET: <a rel="nofollow" class="external text" href="https://code.google.com/p/nhaml/">NHaml</a> <ul><li>ASP.NET: <a rel="nofollow" class="external text" href="https://web.archive.org/web/20080608081951/http://weblogs.asp.net/mirvodasergey/archive/2008/06/02/introducing-monorail-nhaml.aspx">MonoRail NHaml</a></li></ul></li> <li>Perl: <a rel="nofollow" class="external text" href="https://metacpan.org/module/Text::Haml">Text::Haml</a></li> <li>Scala: <a rel="nofollow" class="external text" href="https://web.archive.org/web/20100216131951/http://scalate.fusesource.org/index.html">Scalate</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haml&action=edit&section=10" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239009302">.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{clear:left;float:left;margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}</style><ul role="navigation" aria-label="Portals" class="noprint portalbox portalborder portalright"> <li class="portalbox-entry"><span class="portalbox-image"><span class="noviewer" typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/3/31/Free_and_open-source_software_logo_%282009%29.svg/28px-Free_and_open-source_software_logo_%282009%29.svg.png" decoding="async" width="28" height="28" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/3/31/Free_and_open-source_software_logo_%282009%29.svg/42px-Free_and_open-source_software_logo_%282009%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/3/31/Free_and_open-source_software_logo_%282009%29.svg/56px-Free_and_open-source_software_logo_%282009%29.svg.png 2x" data-file-width="512" data-file-height="512" /></span></span></span><span class="portalbox-link"><a href="/wiki/Portal:Free_and_open-source_software" title="Portal:Free and open-source software">Free and open-source software portal</a></span></li></ul> <ul><li><a href="/wiki/BBCode" title="BBCode">BBCode</a></li> <li><a href="/wiki/ERuby" title="ERuby">eRuby</a></li> <li><a href="/wiki/Markaby" title="Markaby">Markaby</a></li> <li><a href="/wiki/Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a></li> <li><a href="/wiki/Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a></li> <li><a href="/wiki/YAML" title="YAML">YAML</a></li> <li><a href="/wiki/Sass_(style_sheet_language)" title="Sass (style sheet language)">Sass</a> – a similar system for <a href="/wiki/Cascading_Style_Sheets" class="mw-redirect" title="Cascading Style Sheets">CSS</a>, also designed by Catlin.</li> <li>Website Meta Language – another template language with similar functionalities</li> <li><a href="/wiki/Web_template" class="mw-redirect" title="Web template">Web template</a> – general concept of template to <a href="/wiki/HTML" title="HTML">HTML</a> expansion</li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haml&action=edit&section=11" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-github-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-github_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-github_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/haml/haml">"GitHub"</a>. <i><a href="/wiki/GitHub" title="GitHub">GitHub</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">28 April</span> 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=GitHub&rft.atitle=GitHub&rft_id=https%3A%2F%2Fgithub.com%2Fhaml%2Fhaml&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaml" class="Z3988"></span></span> </li> <li id="cite_note-wikidata-30eae55cc242ffc54ba5d86bd8b3b77569b3f845-v18-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-wikidata-30eae55cc242ffc54ba5d86bd8b3b77569b3f845-v18_2-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/haml/haml/releases/tag/v6.3.0">"Release 6.3.0"</a>. 10 December 2023<span class="reference-accessdate">. Retrieved <span class="nowrap">19 December</span> 2023</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Release+6.3.0&rft.date=2023-12-10&rft_id=https%3A%2F%2Fgithub.com%2Fhaml%2Fhaml%2Freleases%2Ftag%2Fv6.3.0&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaml" class="Z3988"></span></span> </li> <li id="cite_note-Encoding-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-Encoding_3-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://haml.info/docs/yardoc/file.REFERENCE.html">"Encoding"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">29 January</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Encoding&rft_id=http%3A%2F%2Fhaml.info%2Fdocs%2Fyardoc%2Ffile.REFERENCE.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaml" class="Z3988"></span></span> </li> <li id="cite_note-UTF_Encodings-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-UTF_Encodings_4-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/haml/haml/blob/88110b0607efca433c13bb1e339dcb1131edf010/lib/haml/util.rb">"UTF encodings"</a>. <i><a href="/wiki/GitHub" title="GitHub">GitHub</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">7 February</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=GitHub&rft.atitle=UTF+encodings&rft_id=https%3A%2F%2Fgithub.com%2Fhaml%2Fhaml%2Fblob%2F88110b0607efca433c13bb1e339dcb1131edf010%2Flib%2Fhaml%2Futil.rb&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaml" class="Z3988"></span></span> </li> <li id="cite_note-about_page-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-about_page_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-about_page_5-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-about_page_5-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://haml.info/about.html">"About"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">28 April</span> 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=About&rft_id=http%3A%2F%2Fhaml.info%2Fabout.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaml" class="Z3988"></span></span> </li> <li id="cite_note-changelog-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-changelog_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-changelog_6-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-changelog_6-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/haml/haml/blob/master/CHANGELOG.md">"Changelog"</a>. <i><a href="/wiki/GitHub" title="GitHub">GitHub</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">28 April</span> 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=GitHub&rft.atitle=Changelog&rft_id=https%3A%2F%2Fgithub.com%2Fhaml%2Fhaml%2Fblob%2Fmaster%2FCHANGELOG.md&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaml" class="Z3988"></span></span> </li> <li id="cite_note-Trace-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-Trace_7-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.rubydoc.info/github/haml/haml/Haml/Options:trace">"Trace Option in Haml"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">16 February</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Trace+Option+in+Haml&rft_id=http%3A%2F%2Fwww.rubydoc.info%2Fgithub%2Fhaml%2Fhaml%2FHaml%2FOptions%3Atrace&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaml" class="Z3988"></span></span> </li> <li id="cite_note-Using_Haml-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-Using_Haml_8-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://haml.info/docs/yardoc/file.REFERENCE.html#using_haml">"Using Haml"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">7 February</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Using+Haml&rft_id=http%3A%2F%2Fhaml.info%2Fdocs%2Fyardoc%2Ffile.REFERENCE.html%23using_haml&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaml" class="Z3988"></span></span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haml&action=edit&section=12" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="https://haml.info">Official website</a></span></span> <span class="mw-valign-text-top" typeof="mw:File/Frameless"><a href="https://www.wikidata.org/wiki/Q1573599#P856" title="Edit this at Wikidata"><img alt="Edit this at Wikidata" src="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span> <ul><li><a rel="nofollow" class="external text" href="http://haml.info/tutorial.html">Haml tutorial</a></li></ul></li> <li><a rel="nofollow" class="external text" href="https://learnxinyminutes.com/docs/haml/">Learn Haml (basic)</a></li> <li><a rel="nofollow" class="external text" href="https://github.com/haml/haml">Haml</a> on <a href="/wiki/GitHub" title="GitHub">GitHub</a></li> <li><a rel="nofollow" class="external text" href="http://phphaml.sourceforge.net/">phpHaml</a>, Haml implementation for <a href="/wiki/PHP" title="PHP">PHP</a></li> <li><a rel="nofollow" class="external text" href="https://groups.google.com/forum/?hl=en#!forum/haml">Haml Google Group</a></li> <li><a rel="nofollow" class="external text" href="http://weblog.rubyonrails.org/2007/1/19/haml-1-0">Haml 1.0</a>, announcement on the official Ruby on Rails weblog</li></ul> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐vthpd Cached time: 20241122150056 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.416 seconds Real time usage: 0.675 seconds Preprocessor visited node count: 1474/1000000 Post‐expand include size: 27754/2097152 bytes Template argument size: 3311/2097152 bytes Highest expansion depth: 21/100 Expensive parser function count: 18/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 50585/5000000 bytes Lua time usage: 0.263/10.000 seconds Lua memory usage: 7982693/52428800 bytes Number of Wikibase entities loaded: 1/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 617.083 1 -total 42.91% 264.801 2 Template:Infobox 36.43% 224.810 1 Template:Infobox_programming_language 32.65% 201.479 1 Template:Infobox_software/simple 25.89% 159.774 2 Template:Wikidata 12.25% 75.583 1 Template:Short_description 12.24% 75.530 1 Template:Advert 9.85% 60.769 1 Template:Ambox 8.98% 55.444 1 Template:Reflist 7.57% 46.719 2 Template:Pagetype --> <!-- Saved in parser cache with key enwiki:pcache:idhash:11674306-0!canonical and timestamp 20241122150056 and revision id 1240772102. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Haml&oldid=1240772102">https://en.wikipedia.org/w/index.php?title=Haml&oldid=1240772102</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Ruby_(programming_language)" title="Category:Ruby (programming language)">Ruby (programming language)</a></li><li><a href="/wiki/Category:Template_engines" title="Category:Template engines">Template engines</a></li><li><a href="/wiki/Category:Free_computer_libraries" title="Category:Free computer libraries">Free computer libraries</a></li><li><a href="/wiki/Category:Software_using_the_MIT_license" title="Category:Software using the MIT license">Software using the MIT license</a></li><li><a href="/wiki/Category:Lightweight_markup_languages" title="Category:Lightweight markup languages">Lightweight markup languages</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_is_different_from_Wikidata" title="Category:Short description is different from Wikidata">Short description is different from Wikidata</a></li><li><a href="/wiki/Category:Articles_with_a_promotional_tone_from_July_2017" title="Category:Articles with a promotional tone from July 2017">Articles with a promotional tone from July 2017</a></li><li><a href="/wiki/Category:All_articles_with_a_promotional_tone" title="Category:All articles with a promotional tone">All articles with a promotional tone</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 17 August 2024, at 09:50<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Haml&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-565f7699fc-k7sq2","wgBackendResponseTime":200,"wgPageParseReport":{"limitreport":{"cputime":"0.416","walltime":"0.675","ppvisitednodes":{"value":1474,"limit":1000000},"postexpandincludesize":{"value":27754,"limit":2097152},"templateargumentsize":{"value":3311,"limit":2097152},"expansiondepth":{"value":21,"limit":100},"expensivefunctioncount":{"value":18,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":50585,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 617.083 1 -total"," 42.91% 264.801 2 Template:Infobox"," 36.43% 224.810 1 Template:Infobox_programming_language"," 32.65% 201.479 1 Template:Infobox_software/simple"," 25.89% 159.774 2 Template:Wikidata"," 12.25% 75.583 1 Template:Short_description"," 12.24% 75.530 1 Template:Advert"," 9.85% 60.769 1 Template:Ambox"," 8.98% 55.444 1 Template:Reflist"," 7.57% 46.719 2 Template:Pagetype"]},"scribunto":{"limitreport-timeusage":{"value":"0.263","limit":"10.000"},"limitreport-memusage":{"value":7982693,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-vthpd","timestamp":"20241122150056","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Haml","url":"https:\/\/en.wikipedia.org\/wiki\/Haml","sameAs":"http:\/\/www.wikidata.org\/entity\/Q1573599","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q1573599","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2006-08-06T00:30:58Z","dateModified":"2024-08-17T09:50:57Z","headline":"templating system that is designed to avoid writing inline code in a web document and make the HTML cleaner"}</script> </body> </html>