Фильтр обозначается двоеточием. Фильтры позволяют передавать вложенный блок текста в качестве входных данных для фильтров и вернуть результат в Haml. Синтаксис довольно простой - после двоеточия следует название фильтра. Например:
%p
:markdown
# Greetings
Hello, *World*
компилируется в
<p>
<h1>Greetings</h1>
<p>Hello, <em>World</em></p>
</p>
Фильтры могут взаимодействовать с интерполяцией #{}
Ruby кода. Например:
- flavor = "raspberry"
#content
:textile
I *really* prefer _#{flavor}_ jam.
компилируется в
<div id='content'>
<p>I <strong>really</strong> prefer <em>raspberry</em> jam.</p>
</div>
На данный момент фильтры игнорируют опцию
:escape_html
.
Это означает, что в #{}
интерполяции фильтры никогда не смогут экранировать HTML.
Функциональность некоторых фильтров, таких как Markdown, может быть представлена множеством различных библиотек. Как правило вы даже не подозреваете об этом - вы просто загружаете выбранный gem и Haml автоматически начинает его использовать.
Однако, в некоторых случаях вы можете ясно указать Haml на специфический gem, который будет использоваться как фильтр. В данном случае вы сможете реализовать такую возможность с помощью Tilt, библиотеки, которую Haml использует для реализации многих используемых фильтров:
Tilt.prefer Tilt::RedCarpetTemplate
Подробная документация по Tilt.
Haml содержит в себе фильтры:
:cdata |
Содержит в себе отфильтрованный текст с тегами CDATA. |
:coffee |
Используя Cofeescript, компилирует код в Javascript. Этот фильтр вы можете объявлять как :coffeescript . Этот фильтр реализован с использованием Tilt. |
:css |
Содержит в себе стили в теге <style> и (при необходимости) теги CDATA. Используется для внедрения CSS непосредственно в HTML. Используйте
:cdata
опцию
для управления тегами CDATA.
|
:erb |
Обрабатывает ERb код, как RHTML шаблон. Фильтр не будет работать, если у опции
:suppress_eval
значение true. Встроенный Ruby код обрабатывается в том же контексте, что и Haml. Этот фильтр реализован с использованием Tilt.
|
:escaped |
Добавляет экранирование HTML символов. |
:javascript |
Содержит в себе код в теге <script> и (при необходимости) теги CDATA. Используется для внедрения Javascript непосредственно в HTML. Используйте
:cdata
опцию
для управления тегами CDATA.
|
:less |
Содержит в себе стили в Less формате и компилирует их в CSS. Этот фильтр реализован с использованием Tilt. |
:markdown |
Содержит в себе код в формате Markdown. Этот фильтр реализован с использованием Tilt. |
:maruku |
Содержит в себе код в формате Maruku, который добавляет новые возможности в синтаксис Markdown. С версии 4.0 Haml этот фильтр объявляется через Haml contrib, но загружается автоматически по историческим обстоятельствам. В будущих версиях Haml этот фильтр не будет загружаться по умолчанию. Этот фильтр реализован при помощи Tilt. |
:plain |
Используется для больших блоков текста без HTML тегов, когда вы не хотите, чтобы строка начиналась с . или - для обработки. |
:preserve |
:ruby |
Обрабатывает код стандартным интерпретатором Ruby. Создает IO -объект с названием haml_io и всё, что в него записано попадает в документ. Фильтр недоступен, если значение опции
:suppress_eval
true. Код Ruby обрабатывается в том же контексте, что и шаблон Haml.
|
:sass |
Содержит в себе стили в формате Sass и компилирует их в CSS. Этот фильтр реализован с использованием Tilt. |
:scss |
Обрабатывает и компилирует стили в CSS как фильтр :sass , но с использованием синтаксиса SCSS. Этот фильтр реализован с использованием Tilt. |
:textile |
Содержит в себе текст в формате Textile. Фильтр работает. если установлен плагин RedCloth. С версии 4.0 Haml этот фильтр объявляется через Haml contrib, но загружается автоматически по историческим обстоятельствам. В будущих версиях Haml этот фильтр не будет загружаться по умолчанию. Этот фильтр реализован при помощи Tilt. |
Пользовательские фильтры |
Вы можете объявлять собственные фильтры. Подробности читайте на Haml::Filters |