Довольно просто написать метод, который делает это, предполагая, что вы используете что-то вроде 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 по вашему выбору.