Возможно ли встроить уценку в erb? - PullRequest
3 голосов
/ 28 мая 2010

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

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

Ответы [ 2 ]

9 голосов
/ 28 мая 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 по вашему выбору.

1 голос
/ 28 мая 2010

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

...