在Jekyll插件中调用“markdownify”

时间:2013-09-12 15:14:30

标签: plugins jekyll liquid

我正在尝试在Jekyll插件中手动调用markdownify过滤器。这就是我所拥有的:

module Jekyll

class ColumnBlock < Liquid::Block
    include Jekyll::Filters

    def initialize(tag_name, markup, tokens)
        super
        @col = markup
    end

    def render(context)
        text = super

        '<div class="col-md-' + @col + '">' + markdownify(text) + '</div>'
    end
end

end

Liquid::Template.register_tag('column', Jekyll::ColumnBlock)

我收到以下错误:Liquid Exception: undefined method 'registers' for nil:NilClass

我是Jekyll和Ruby的新手。当我想使用markdownify过滤器时,我需要包含哪些内容?

2 个答案:

答案 0 :(得分:5)

为什么不直接调用转换器??

请参阅source code

def render(context)
    text = super

     site = context.registers[:site]
     converter = site.getConverterImpl(Jekyll::Converters::Markdown)
    '<div class="col-md-' + @col + '">' + converter.convert(text) + '</div>'
end

答案 1 :(得分:2)

在Jekyll 3中不推荐使用

更新 - getConverterImpl ,您应该使用 find_converter_instance

def render(context)
  text = super
  site = context.registers[:site]
  converter = site.find_converter_instance(::Jekyll::Converters::Markdown)
  '<div class="col-md-' + @col + '">' + converter.convert(text) + '</div>'