Haml (HTML Abstraction Markup Language) — це мова для написання шаблонів, головною метою якої є написання простого і легкого для сприйняття коду, який інтерпретується в звичайний HTML. Haml дає змогу писати динамічний код для HTML. Аналогічно іншим мовам програмування для вебу, таких як PHP, ASP, JSP та шаблонних систем типа eRuby, Haml також дозволяє писати код, що буде виконаний протягом генерації HTML і отримати динамічний код. Розширення файлів з кодом − .haml. Такий підхід до роботи схожий на файли .erb (eRuby), що дозволяють вставляти код, написаний на Ruby для генерації коду вебзастосунків. Під час обробки коду Haml користується тими ж правилами, що й Ruby версії 1.9 і новіше. Haml розпізнає тільки кодування, сумісні з ASCII, такі як UTF-8, але при цьому не працює з UTF-16 чи UTF-32 через те, що вони несумісні з ASCII. Haml може працювати через командний рядок як окремий модуль Ruby або ж використовуватися в Ruby on Rails, що робить цю мову гнучкою та зручною для створення багатьох видів застосунків.
Haml | |
---|---|
Парадигма | Мова для шаблонів |
Творці | Нік Волш |
Розробник | Норман Кларк, Мет Вайлдіґ, Акіра Мацуда, Ті Перхем |
Останній реліз | 4.0.7 (10 серпня 2015) |
Мова реалізації | Ruby |
Операційна система | Крос-платформова |
Ліцензія | MIT License, Unspace Interactive. |
Звичайні розширення файлів | .haml |
Репозиторій вихідного коду | github.com/haml/haml |
Вебсайт | haml.info |
Історія
Haml було створено Гемптоном Кетліном у 2006 р. Його метою було спрощення написання і редагування коду на HTML. З 2006 року вийшло кілька оновлених версій цієї мови. У квітні 2012-го роботу над Haml взяв на себе Норман Кларк [ 10 вересня 2014 у Wayback Machine.]. Наталі Вайзенбаум [ 23 січня 2016 у Wayback Machine.] та Нік Волш [ 23 березня 2016 у Wayback Machine.] допомагали вдосконалювати мову і продовжують підтримувати її розвиток. Наталі працювала над тим, щоб HAML був сусісним з застосунками на Ruby, а дизайном та брендінґом займався Нік [ 23 березня 2016 у Wayback Machine.]. Також над проектом працюють Мет Вілдіґ [ 10 вересня 2014 у Wayback Machine.], Акіра Мацуда [ 23 березня 2016 у Wayback Machine.] and Ті Пергем [ 10 вересня 2014 у Wayback Machine.].
Особливості
Haml базується на чотирьох принципах.
Розмітка, яку легко читати
Розмітка коду цією мовою має відповідати наступним правилам:
- Легко розуміти
- Легко використовувати
Розмітка має відповідати принципу DRY. Вона має:
- Уникати непотрібних повторень
- Приділяти увагу чистоті коду
Прості відступи
Мову розмітки зі зручними відступами легко читати і відразу бачити початок та кінець коду елементів.
Зрозуміла структура
Зрозуміла структура коду допомагає легко його масштабувати і редагувати.
Приклади
Розмітка Haml дуже схожа на синтаксис CSS. Наприклад, в Haml символ .
відповідає за визначення класів, як це робиться в CSS.
Приклад «Hello, World»
Просте рішення для Hello World на Haml виглядатиме так:
Haml as a Command-line tool
%p{:class => "sample", :id => "welcome"} Hello, World!
Що буде екпортовано в наступний HTML:
<p class="sample" id="welcome">Hello, World!</p>
Щоб запустити код Haml, потрібно інсталювати Haml
за допомогою gem:
gem install haml
Код Haml, що збережений у файл Hello.haml
, можна запустити наступним чином:
haml Hello.haml
Haml у вигляді джема для Ruby on Rails
Щоб використовувати Haml з Ruby, файл Gemfile
має включати наступний рядок:
gem 'haml'
Аналогічно до мови ERB, Haml також може оперувати локальними змінними, що задекларовані в тому ж файлі в Ruby-коді. Цей код містить приклад коду контролера Ruby.
- файл: app/controllers/messages_controller.rb
class MessagesController < ApplicationController def index @message = "Hello, World!" end end
- файл: app/views/messages/index.html.hamlБуде скомпільовано в:
#welcome %p= @message
<div id="welcome"> <p>Hello, World!</p> </div>
Haml як модуль Ruby
Щоб користуватись Haml окремо від Rails та ActionView [ 28 травня 2017 у Wayback Machine.], інсталюйте haml
за допомогою gem, включіть його до Gemfile
, а далі імпортуйте [Usage: require 'haml']
до скрипту на Ruby або запустіть інтерпретатор Ruby за допомогою -rubygems
.
welcome = Haml::Engine.new("%p Hello, World!") welcome.render
Результат:
<p>Hello, World!</p>
Haml::Engine [ 2 червня 2017 у Wayback Machine.] є класом Haml.
Приклад
Haml використовує відступи у вигляді двох пробілів для створення вкладених тегів. Це служить еквівалентом відкриттю і закриттю парних тегів у HTML, притримуючись методу DRY, роблячи код простим і легким для читання. Наступний приклад показує відмінності між Haml та ERB (з використанням Ruby).
Haml | ERB |
---|---|
%div.category %div.recipes %h1= recipe.name %h3= recipe.category %div %h4= recipe.description | <div class="category"> <div class="recipes"> <h1><%= recipe.name %></h1> <h3><%= recipe.category %></h3> </div> <div> <h4><%= recipe.description %></h4> </div> </div> |
В обох випадках скомпільований HTML буде наступним:
<div class="category"> <div class="recipes"> <h1>Cookie</h1> <h3>Desserts</h3> </div> <div> <h4>Made from dough and sugar. Usually circular in shape and has about 400 calories.</h4> </div> </div>
Основні відмінності:
- В Haml немає закриття тегів, як у ERB
- Синтакс ERB дуже схожий на HTML, в той час як Haml більше схожий на CSS.
- Haml використовує відступи для створення структури елементів-тегів, а ERB має схожий на HTML синтаксис.
- Властивості Haml, такі як
class
іid
можна призначати за допомогою символів#
та.
відповідно. Також можна використовувати атрибутиclass
таid
, що не є необхідним. Haml також використовує символ%
, щоб відокремити елемент HTML замість кутових дужок<>
, як це робить ERB.
Приклад з вкрапленням Ruby
Це простий приклад коду, який, втім, може не відображати сучасну розмітку мови.
!!! %html{ :xmlns => "http://www.w3.org/1999/xhtml", :lang => "en", "xml:lang" => "en"} %head %title BoBlog %meta{"http-equiv" => "Content-Type", :content => "text/html"; charset="utf-8"} %link{"rel" => "stylesheet", "href" => "main.css", "type" => "text/css"} %body #header %h1 BoBlog %h2 Bob's Blog #content - @entries.each do |entry| .entry %h3.title= entry.title %p.date= entry.posted.strftime("%A, %B %d, %Y") %p.body= entry.body #footer %p All content copyright © Bob
Цей код Haml буде інтерпретовано у наступний XHTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'> <head> <title>BoBlog</title> <meta content='text/html; charset=utf-8' http-equiv='Content-Type' /> <link href="/stylesheets/main.css" media="screen" rel="Stylesheet" type="text/css" /> </head> <body> <div id='header'> <h1>BoBlog</h1> <h2>Bob's Blog</h2> </div> <div id='content'> <div class='entry'> <h3 class='title'>Halloween</h3> <p class='date'>Tuesday, October 31, 2006</p> <p class='body'> Happy Halloween, glorious readers! I'm going to a party this evening... I'm very excited. </p> </div> <div class='entry'> <h3 class='title'>New Rails Templating Engine</h3> <p class='date'>Friday, August 11, 2006</p> <p class='body'> There's a very cool new Templating Engine out for Ruby on Rails. It's called Haml. </p> </div> </div> <div id='footer'> <p> All content copyright © Bob </p> </div> </body> </html>
Реалізація
Haml можна легко використовувати з іншими мовами. Нижче наведено список мов, в яких є можливість імплементації коду HAML:
- HamlPy (Python) [ 8 квітня 2016 у Wayback Machine.]
- LuaHaml (Lua) [ 10 червня 2018 у Wayback Machine.]
- NHaml (.NET) [ 16 березня 2016 у Wayback Machine.]
- pHAML (PHP) [ 10 червня 2017 у Wayback Machine.]
- phamlp (PHP) [ 3 квітня 2016 у Wayback Machine.]
- phpHaml (PHP5) [ 19 червня 2017 у Wayback Machine.]
- Multi target HAML (PHP5.3) [ 11 червня 2018 у Wayback Machine.]
- haml-js (JavaScript) [ 19 березня 2016 у Wayback Machine.]
- Text::Haml (Perl) [ 17 жовтня 2019 у Wayback Machine.]
- JHaml (Java) [ 11 червня 2018 у Wayback Machine.]
- Hart (Dart) [ 10 червня 2018 у Wayback Machine.]
- cl-haml (Common Lisp) [ 11 червня 2018 у Wayback Machine.]
Див. також
- BBCode
- eRuby
- Markaby
- Ruby
- Ruby on Rails
- YAML
- Sass — схожа система для CSS.
- Вебшаблони − концепт шаблонів для розширення HTML
Додаткові матеріали
- Документація Haml [ 29 травня 2017 у Wayback Machine.]
- Основи Haml [ 23 квітня 2017 у Wayback Machine.]
Примітки
- MIT License. Процитовано 15 лютого 2016.
- . Архів оригіналу за 27 квітня 2017. Процитовано 30 січня 2016.
- . Архів оригіналу за 29 травня 2017. Процитовано 29 січня 2016.
- . Архів оригіналу за 16 лютого 2019. Процитовано 7 лютого 2016.
- . Архів оригіналу за 27 травня 2017. Процитовано 29 січня 2016.
- . Архів оригіналу за 29 травня 2017. Процитовано 7 лютого 2016.
Посилання
- Офіційний сайт Haml [ 12 травня 2019 у Wayback Machine.]
- Репозиторій Haml (Git) [ 28 січня 2016 у Wayback Machine.]
- phpHaml (робота Haml в PHP 5) [ 19 червня 2017 у Wayback Machine.]
- Haml в Google Group
- Презентація Haml версії 1.0 в блозі Ruby on Rails [ 19 травня 2017 у Wayback Machine.]
Це незавершена стаття про мови програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Haml HTML Abstraction Markup Language ce mova dlya napisannya shabloniv golovnoyu metoyu yakoyi ye napisannya prostogo i legkogo dlya sprijnyattya kodu yakij interpretuyetsya v zvichajnij HTML Haml daye zmogu pisati dinamichnij kod dlya HTML Analogichno inshim movam programuvannya dlya vebu takih yak PHP ASP JSP ta shablonnih sistem tipa eRuby Haml takozh dozvolyaye pisati kod sho bude vikonanij protyagom generaciyi HTML i otrimati dinamichnij kod Rozshirennya fajliv z kodom haml Takij pidhid do roboti shozhij na fajli erb eRuby sho dozvolyayut vstavlyati kod napisanij na Ruby dlya generaciyi kodu vebzastosunkiv Pid chas obrobki kodu Haml koristuyetsya timi zh pravilami sho j Ruby versiyi 1 9 i novishe Haml rozpiznaye tilki koduvannya sumisni z ASCII taki yak UTF 8 ale pri comu ne pracyuye z UTF 16 chi UTF 32 cherez te sho voni nesumisni z ASCII Haml mozhe pracyuvati cherez komandnij ryadok yak okremij modul Ruby abo zh vikoristovuvatisya v Ruby on Rails sho robit cyu movu gnuchkoyu ta zruchnoyu dlya stvorennya bagatoh vidiv zastosunkiv HamlParadigmaMova dlya shablonivTvorciNik VolshRozrobnikNorman Klark Met Vajldig Akira Macuda Ti PerhemOstannij reliz4 0 7 10 serpnya 2015 Mova realizaciyiRubyOperacijna sistemaKros platformovaLicenziyaMIT License Unspace Interactive Zvichajni rozshirennya fajliv hamlRepozitorij vihidnogo kodugithub com haml hamlVebsajthaml infoIstoriyaHaml bulo stvoreno Gemptonom Ketlinom u 2006 r Jogo metoyu bulo sproshennya napisannya i redaguvannya kodu na HTML Z 2006 roku vijshlo kilka onovlenih versij ciyeyi movi U kvitni 2012 go robotu nad Haml vzyav na sebe Norman Klark 10 veresnya 2014 u Wayback Machine Natali Vajzenbaum 23 sichnya 2016 u Wayback Machine ta Nik Volsh 23 bereznya 2016 u Wayback Machine dopomagali vdoskonalyuvati movu i prodovzhuyut pidtrimuvati yiyi rozvitok Natali pracyuvala nad tim shob HAML buv susisnim z zastosunkami na Ruby a dizajnom ta brendingom zajmavsya Nik 23 bereznya 2016 u Wayback Machine Takozh nad proektom pracyuyut Met Vildig 10 veresnya 2014 u Wayback Machine Akira Macuda 23 bereznya 2016 u Wayback Machine and Ti Pergem 10 veresnya 2014 u Wayback Machine OsoblivostiHaml bazuyetsya na chotiroh principah Rozmitka yaku legko chitati Rozmitka kodu ciyeyu movoyu maye vidpovidati nastupnim pravilam Legko rozumiti Legko vikoristovuvati DRY Rozmitka maye vidpovidati principu DRY Vona maye Unikati nepotribnih povtoren Pridilyati uvagu chistoti kodu Prosti vidstupi Movu rozmitki zi zruchnimi vidstupami legko chitati i vidrazu bachiti pochatok ta kinec kodu elementiv Zrozumila struktura Zrozumila struktura kodu dopomagaye legko jogo masshtabuvati i redaguvati PrikladiRozmitka Haml duzhe shozha na sintaksis CSS Napriklad v Haml simvol vidpovidaye za viznachennya klasiv yak ce robitsya v CSS Priklad Hello World Proste rishennya dlya Hello World na Haml viglyadatime tak Haml as a Command line tool p class gt sample id gt welcome Hello World Sho bude ekportovano v nastupnij HTML lt p class sample id welcome gt Hello World lt p gt Shob zapustiti kod Haml potribno instalyuvati Haml za dopomogoyu gem gem install haml Kod Haml sho zberezhenij u fajl Hello haml mozhna zapustiti nastupnim chinom haml Hello haml Haml u viglyadi dzhema dlya Ruby on Rails Shob vikoristovuvati Haml z Ruby fajl Gemfile maye vklyuchati nastupnij ryadok gem haml Analogichno do movi ERB Haml takozh mozhe operuvati lokalnimi zminnimi sho zadeklarovani v tomu zh fajli v Ruby kodi Cej kod mistit priklad kodu kontrolera Ruby fajl app controllers messages controller rbclass MessagesController lt ApplicationController def index message Hello World end end fajl app views messages index html haml welcome p messageBude skompilovano v lt div id welcome gt lt p gt Hello World lt p gt lt div gt Haml yak modul Ruby Shob koristuvatis Haml okremo vid Rails ta ActionView 28 travnya 2017 u Wayback Machine instalyujte haml za dopomogoyu gem vklyuchit jogo do Gemfile a dali importujte Usage require haml do skriptu na Ruby abo zapustit interpretator Ruby za dopomogoyu rubygems welcome Haml Engine new p Hello World welcome render Rezultat lt p gt Hello World lt p gt Haml Engine 2 chervnya 2017 u Wayback Machine ye klasom Haml Priklad Haml vikoristovuye vidstupi u viglyadi dvoh probiliv dlya stvorennya vkladenih tegiv Ce sluzhit ekvivalentom vidkrittyu i zakrittyu parnih tegiv u HTML pritrimuyuchis metodu DRY roblyachi kod prostim i legkim dlya chitannya Nastupnij priklad pokazuye vidminnosti mizh Haml ta ERB z vikoristannyam Ruby Haml ERB div category div recipes h1 recipe name h3 recipe category div h4 recipe description lt div class category gt lt div class recipes gt lt h1 gt lt recipe name gt lt h1 gt lt h3 gt lt recipe category gt lt h3 gt lt div gt lt div gt lt h4 gt lt recipe description gt lt h4 gt lt div gt lt div gt V oboh vipadkah skompilovanij HTML bude nastupnim lt div class category gt lt div class recipes gt lt h1 gt Cookie lt h1 gt lt h3 gt Desserts lt h3 gt lt div gt lt div gt lt h4 gt Made from dough and sugar Usually circular in shape and has about 400 calories lt h4 gt lt div gt lt div gt Osnovni vidminnosti V Haml nemaye zakrittya tegiv yak u ERB Sintaks ERB duzhe shozhij na HTML v toj chas yak Haml bilshe shozhij na CSS Haml vikoristovuye vidstupi dlya stvorennya strukturi elementiv tegiv a ERB maye shozhij na HTML sintaksis Vlastivosti Haml taki yak class i id mozhna priznachati za dopomogoyu simvoliv ta vidpovidno Takozh mozhna vikoristovuvati atributi class ta id sho ne ye neobhidnim Haml takozh vikoristovuye simvol shob vidokremiti element HTML zamist kutovih duzhok lt gt yak ce robit ERB Priklad z vkraplennyam Ruby Ce prostij priklad kodu yakij vtim mozhe ne vidobrazhati suchasnu rozmitku movi html xmlns gt http www w3 org 1999 xhtml lang gt en xml lang gt en head title BoBlog meta http equiv gt Content Type content gt text html charset utf 8 link rel gt stylesheet href gt main css type gt text css body header h1 BoBlog h2 Bob s Blog content entries each do entry entry h3 title entry title p date entry posted strftime A B d Y p body entry body footer p All content copyright c Bob Cej kod Haml bude interpretovano u nastupnij XHTML lt DOCTYPE html PUBLIC W3C DTD XHTML 1 0 Transitional EN http www w3 org TR xhtml1 DTD xhtml1 transitional dtd gt lt html lang en xml lang en xmlns http www w3 org 1999 xhtml gt lt head gt lt title gt BoBlog lt title gt lt meta content text html charset utf 8 http equiv Content Type gt lt link href stylesheets main css media screen rel Stylesheet type text css gt lt head gt lt body gt lt div id header gt lt h1 gt BoBlog lt h1 gt lt h2 gt Bob s Blog lt h2 gt lt div gt lt div id content gt lt div class entry gt lt h3 class title gt Halloween lt h3 gt lt p class date gt Tuesday October 31 2006 lt p gt lt p class body gt Happy Halloween glorious readers I m going to a party this evening I m very excited lt p gt lt div gt lt div class entry gt lt h3 class title gt New Rails Templating Engine lt h3 gt lt p class date gt Friday August 11 2006 lt p gt lt p class body gt There s a very cool new Templating Engine out for Ruby on Rails It s called Haml lt p gt lt div gt lt div gt lt div id footer gt lt p gt All content copyright c Bob lt p gt lt div gt lt body gt lt html gt RealizaciyaHaml mozhna legko vikoristovuvati z inshimi movami Nizhche navedeno spisok mov v yakih ye mozhlivist implementaciyi kodu HAML HamlPy Python 8 kvitnya 2016 u Wayback Machine LuaHaml Lua 10 chervnya 2018 u Wayback Machine NHaml NET 16 bereznya 2016 u Wayback Machine pHAML PHP 10 chervnya 2017 u Wayback Machine phamlp PHP 3 kvitnya 2016 u Wayback Machine phpHaml PHP5 19 chervnya 2017 u Wayback Machine Multi target HAML PHP5 3 11 chervnya 2018 u Wayback Machine haml js JavaScript 19 bereznya 2016 u Wayback Machine Text Haml Perl 17 zhovtnya 2019 u Wayback Machine JHaml Java 11 chervnya 2018 u Wayback Machine Hart Dart 10 chervnya 2018 u Wayback Machine cl haml Common Lisp 11 chervnya 2018 u Wayback Machine Div takozhBBCode eRuby Markaby Ruby Ruby on Rails YAML Sass shozha sistema dlya CSS Vebshabloni koncept shabloniv dlya rozshirennya HTMLDodatkovi materialiDokumentaciya Haml 29 travnya 2017 u Wayback Machine Osnovi Haml 23 kvitnya 2017 u Wayback Machine PrimitkiMIT License Procitovano 15 lyutogo 2016 Arhiv originalu za 27 kvitnya 2017 Procitovano 30 sichnya 2016 Arhiv originalu za 29 travnya 2017 Procitovano 29 sichnya 2016 Arhiv originalu za 16 lyutogo 2019 Procitovano 7 lyutogo 2016 Arhiv originalu za 27 travnya 2017 Procitovano 29 sichnya 2016 Arhiv originalu za 29 travnya 2017 Procitovano 7 lyutogo 2016 PosilannyaOficijnij sajt Haml 12 travnya 2019 u Wayback Machine Repozitorij Haml Git 28 sichnya 2016 u Wayback Machine phpHaml robota Haml v PHP 5 19 chervnya 2017 u Wayback Machine Haml v Google Group Prezentaciya Haml versiyi 1 0 v blozi Ruby on Rails 19 travnya 2017 u Wayback Machine Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi