2013-04-05 2 views
4

Я использую Rails 3.2.11, Haml 4.0 и Redcarpet 2.2.2.Как настроить фильтр Haml: markdown для использования Redcarpet с параметрами?

Я хотел бы настроить фильтр :markdown Haml для использования Redcarpet с with_toc_data: true. В ApplicationHelper я попытался определения:

def markdown(text) 
    markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(with_toc_data: true)) 
    raw markdown.render(text.to_s) 
end 

Хотя содержание в :markdown визуализируется, но без данных TOC. Как изменить то, как анализируется :markdown?

ответ

8

В настоящее время нет способа передать параметры фильтров в Haml. На данный момент лучшим решением является замена существующего фильтра :markdown на новый, который имеет нужные параметры.

Попробуйте добавить что-то вроде этого, чтобы инициализаторе:

module Haml::Filters 

    remove_filter("Markdown") #remove the existing Markdown filter 

    module Markdown 

    include Haml::Filters::Base 

    def render(text) 
     Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(with_toc_data: true)).render(text) 
    end 

    end 
end 
+0

Это должно работали, 'AutoLink: true' работает, но' with_toc_data: true' нет. Я собираюсь рассказать о Redcarpet, чтобы увидеть, действительно ли проблема. – silvenon

+0

Хорошо, 'with_toc_data' - это опция для создания рендеринга, я вставил ее в неправильное место. На самом деле это правильный ответ. Что теперь? Я считаю его правильным, даже если он технически не работает (моя ошибка), или вы меня исправили, что это должно быть «Redcarpet :: Markdown.new (Redcarpet :: Render :: HTML.new (with_toc_data: true)) .render (text) ', ** then ** Я одобряю это? – silvenon

+0

@matija Я обновил ответ. Я просто изучал это сам, а затем вернулся, чтобы обновить его и увидел ваш второй комментарий. – matt

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

  • Нет связанных вопросов^_^