| Haml | |
|---|---|
| Парадигма | Мова для шаблонів |
| Творці | Нік Волш |
| Розробник | Норман Кларк,Мет Вайлдіґ,Акіра Мацуда,Ті Перхем |
| Останній реліз | 4.0.7 (10 серпня 2015) |
| Мова реалізації | Ruby |
| Операційна система | Крос-платформова |
| Ліцензія | MIT License,[1]Unspace Interactive.[2] |
| Звичайні розширення файлів | .haml |
| Репозиторій вихідного коду | github.com/haml/haml |
| Вебсайт | haml.info |
Haml (HTMLAbstractionMarkupLanguage) — це мова для написання шаблонів, головною метою якої є написання простого і легкого для сприйняття коду, який інтерпретується в звичайний 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.[3][4] Haml може працювати через командний рядок як окремий модуль Ruby або ж використовуватися в Ruby on Rails, що робить цю мову гнучкою та зручною для створення багатьох видів застосунків.
Haml було створено Гемптоном Кетліном у 2006 р.[5] Його метою було спрощення написання і редагування коду на HTML. З 2006 року вийшло кілька оновлених версій цієї мови. У квітні 2012-го роботу над Haml взяв на себе Норман Кларк[Архівовано 10 вересня 2014 уWayback Machine.].[5]Наталі Вайзенбаум[Архівовано 23 січня 2016 уWayback Machine.] та Нік Волш[Архівовано 23 березня 2016 уWayback Machine.] допомагали вдосконалювати мову і продовжують підтримувати її розвиток. Наталі працювала над тим, щоб HAML був сусісним з застосунками на Ruby, а дизайном та брендінґом займався Нік[Архівовано 23 березня 2016 уWayback Machine.].[5] Також над проектом працюють Мет Вілдіґ[Архівовано 10 вересня 2014 уWayback Machine.],Акіра Мацуда[Архівовано 23 березня 2016 уWayback Machine.] andТі Пергем[Архівовано 10 вересня 2014 уWayback Machine.].[2]
Haml базується на чотирьох принципах.[5]
Розмітка коду цією мовою має відповідати таким правилам:
Розмітка має відповідати принципу DRY. Вона має:
Мову розмітки зі зручними відступами легко читати і відразу бачити початок та кінець коду елементів.
Зрозуміла структура коду допомагає легко його масштабувати і редагувати.
Розмітка Haml дуже схожа на синтаксис CSS. Наприклад, в Haml символ . відповідає за визначення класів, як це робиться в CSS.
Просте рішення для Hello World на Haml виглядатиме так:
%p{:class=>"sample",:id=>"welcome"} Hello, World!
Що буде експортовано в наступний HTML:
<pclass="sample"id="welcome">Hello, World!</p>
Щоб запустити код Haml, потрібно інсталювати Haml за допомогою gem:[6]
gem install haml
Код Haml, що збережений у файл Hello.haml, можна запустити так:
haml Hello.haml
Щоб використовувати Haml зRuby, файл Gemfile має включати наступний рядок:
gem 'haml'
Аналогічно до мови ERB, Haml також може оперувати локальними змінними, що задекларовані в тому ж файлі вRuby-коді. Цей код містить приклад коду контролера Ruby.[6]
classMessagesController<ApplicationControllerdefindex@message="Hello, World!"endend
#welcome%p=@message
<divid="welcome"><p>Hello, World!</p></div>
Щоб користуватись 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 | <divclass="category"><divclass="recipes"><h1><%=recipe.name%></h1><h3><%=recipe.category%></h3></div><div><h4><%=recipe.description%></h4></div></div> |
В обох випадках скомпільований HTML буде таким:
<divclass="category"><divclass="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>
Основні відмінності:
class і id можна призначати за допомогою символів # та . відповідно. Також можна використовувати атрибути class та id, що не є необхідним. Haml також використовує символ %, щоб відокремити елемент HTML замість кутових дужок <>, як це робить ERB.Це простий приклад коду, який, втім, може не відображати сучасну розмітку мови.
!!!%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.eachdo|entry|.entry%h3.title=entry.title%p.date=entry.posted.strftime("%A, %B %d, %Y")%p.body=entry.body#footer%pAll 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"><htmllang='en'xml:lang='en'xmlns='http://www.w3.org/1999/xhtml'><head><title>BoBlog</title><metacontent='text/html; charset=utf-8'http-equiv='Content-Type'/><linkhref="/stylesheets/main.css"media="screen"rel="Stylesheet"type="text/css"/></head><body><divid='header'><h1>BoBlog</h1><h2>Bob's Blog</h2></div><divid='content'><divclass='entry'><h3class='title'>Halloween</h3><pclass='date'>Tuesday, October 31, 2006</p><pclass='body'> Happy Halloween, glorious readers! I'm going to a party this evening... I'm very excited.</p></div><divclass='entry'><h3class='title'>New Rails Templating Engine</h3><pclass='date'>Friday, August 11, 2006</p><pclass='body'> There's a very cool new Templating Engine out for Ruby on Rails. It's called Haml.</p></div></div><divid='footer'><p> All content copyright © Bob</p></div></body></html>
Haml можна легко використовувати з іншими мовами. Нижче наведено список мов, в яких є можливість імплементації коду HAML:
| Це незавершена стаття промови програмування. Ви можетедопомогти проєкту,виправивши або дописавши її. |