2010-05-28 3 views

ответ

1

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

+1

Чтобы быть справедливым, Haml не имеет встроенной поддержки Markdown: он использует любые драгоценности Markdown, доступные в системе. Кроме того, я бы рекомендовал библиотеку pure-Ruby Maruku над RDiscount на основе C и BlueCloth, если только скорость не является серьезной проблемой (чего не должно быть с хорошим кэшированием). –

9

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

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

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

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

+0

Спасибо за указатель. –

Смежные вопросы