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

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

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


person Gaius Parx    schedule 28.05.2010    source источник


Ответы (2)


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

person x1a4    schedule 28.05.2010
comment
Справедливости ради, Haml также не имеет встроенной поддержки Markdown: он использует любые драгоценные камни Markdown, доступные в системе. Кроме того, я бы порекомендовал библиотеку Maruku на чистом Ruby вместо RDiscount и BlueCloth на основе C, если только скорость не является серьезной проблемой (которой не должно быть при хорошем кэшировании). - person Natalie Weizenbaum; 28.05.2010

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

person Natalie Weizenbaum    schedule 28.05.2010