Если вы используете haml в качестве шаблона представления rails, вы можете написать часть своей страницы, используя уценку, используя фильтр «:markdown».
Можно ли сделать то же самое с помощью erb?
Если вы используете haml в качестве шаблона представления rails, вы можете написать часть своей страницы, используя уценку, используя фильтр «:markdown».
Можно ли сделать то же самое с помощью erb?
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 по вашему выбору.