Возможно ли встроить уценку в erb?

Если вы используете haml в качестве шаблона представления рельсов, вы можете написать часть своей страницы, используя уценку, используя фильтр ":markdown".

Можно ли сделать то же самое с помощью erb?

2 ответа

Решение

ERB не имеет встроенной фильтрации. Вам нужно будет напрямую использовать драгоценный камень, который его обрабатывает, например, RDiscount или почтенный BlueCloth.

Довольно легко написать метод, который делает это, при условии, что вы используете что-то вроде Rails, которое имеет #capture, #concat, а также #markdown хелперы. Вот пример использования Maruku:

def markdown_filter(&block)
  concat(markdown(capture(&block)))
end

Тогда вы можете использовать это так:

<% markdown_filter do %>
# Title

This is a *paragraph*.

This is **another paragraph**.
<% end %>

Здесь есть несколько вещей, на которые стоит обратить внимание. Во-первых, важно, чтобы весь текст в блоке не имел отступов; Вы могли бы обойти это, выяснив общий отступ строк и удалив его, но я не сделал этого в примере помощника выше. Во-вторых, он использует Rails #markdown помощник, который может быть легко реализован в других рамках Maruku с выбранным вами процессором Markdown):

def markdown(text)
  Maruku.new(text).to_html
end

Rails 3 удалил #markdown помощник, так что просто добавьте приведенный выше код в соответствующий помощник, заменив процессор Markdown по вашему выбору.

Другие вопросы по тегам