我正在尝试在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
过滤器时,我需要包含哪些内容?
答案 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)
更新 - 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>'