Как настроить фильтр уценки Haml's: использовать Redcarpet с опциями?

Я использую Rails 3.2.11, Haml 4.0 и Redcarpet 2.2.2.

Я хотел бы настроить Хамла :markdown фильтр для использования 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 отображается, но без данных оглавления. Как я могу изменить как :markdown анализируется?

1 ответ

Решение

В настоящее время нет способа передать опции в движки фильтров в 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
Другие вопросы по тегам