2

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

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过滤器时,我必须包括什么?

4

2 回答 2

6

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

查看源代码

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
于 2013-09-12T15:58:49.790 回答
3

更新 -在 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>'
于 2016-03-04T15:11:13.037 回答