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

Ran*_*Lai 3 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
Run Code Online (Sandbox Code Playgroud)

现在,我能得到它的最接近的东西

converter = Jekyll::Converters::Markdown::KramdownParser.new(@config)
converter.convert(content)
Run Code Online (Sandbox Code Playgroud)

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

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

dre*_*rry 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
Run Code Online (Sandbox Code Playgroud)

基本上,您正确使用Jekyll::Converters::Markdown,但您无需指定KramdownParser,因为您选择的解析器将Jekyll::Site在您传入@config构造函数时自动选择.