как передать содержимое в преобразователь по умолчанию jekyll после пользовательского преобразования?

Я пытаюсь написать плагин jekyll, который сначала что-то делает с файлами уценки и передает содержимое обратно в конвертер по умолчанию.

Например,

module Jekyll
    class RMarkdownConverter < Converter
        safe :false
        priority :high

        def matches(ext)
            ext =~ /^\.(md|markdown)$/i
        end

        def output_ext(ext)
            ".html"
        end

        def convert(content)
            # do something with content
            # then pass it back to default converter
        end
    end
end

Прямо сейчас, самое близкое, что я мог получить

converter = Jekyll::Converters::Markdown::KramdownParser.new(@config)
converter.convert(content)

Но все коды подсветки теряют цвет... и я подозреваю, что есть и другие проблемы...

Мой вопрос: как правильно вызвать конвертер по умолчанию?


person Randy Lai    schedule 31.03.2014    source источник


Ответы (1)


Вот как это сделать:

module Jekyll
    class MyConverter < Converter
        safe :false
        priority :high

        def matches(ext)
            ext =~ /^\.(md|markdown)$/i
        end

        def output_ext(ext)
            ".html"
        end

        def convert(content)
            # do your own thing with the content
            content = my_own_thing(content)

            # Now call the standard Markdown converter
            site = Jekyll::Site.new(@config)
            mkconverter = site.getConverterImpl(Jekyll::Converters::Markdown)
            mkconverter.convert(content)
        end
    end
end

По сути, вы были правы, используя Jekyll::Converters::Markdown, но вам не нужно указывать KramdownParser, так как выбранный вами синтаксический анализатор будет автоматически выбран из Jekyll::Site при передаче @config в конструктор.

person drewsberry    schedule 27.09.2014
comment
оказывается, github.com/navarroj/krampygs решил мою проблему. Спасибо за вклад, хотя. - person Randy Lai; 29.09.2014