4

我正在尝试编写一个 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)

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

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

4

1 回答 1

6

这是如何做到的:

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到构造函数时自动选择。

于 2014-09-27T13:53:42.007 回答