自定义转换后如何将内容传递给jekyll默认转换器?

时间:2014-03-31 12:35:09

标签: ruby markdown jekyll kramdown

我正在尝试编写一个jekyll插件,它首先对markdown文件执行某些操作并将内容传递回默认转换器

例如,

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)

但所有突出显示的代码都在失去颜色......我怀疑还有其他问题......

我的问题是: 什么是调用默认转换器的正确方法?

1 个答案:

答案 0 :(得分:5)

以下是如何操作:

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时,将自动从{{1}}中选择所选的解析器构造函数。