Фильтр обозначается двоеточием. Фильтры позволяют передавать вложенный блок текста в качестве входных данных для фильтров и вернуть результат в 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
На сайте функционирует система проверки ошибок. Обнаружив неточность в тексте, выделите ее и нажмите Ctrl + Enter. Также отправить оповещение об ошибке можно, нажав на эту ссылку.