Ruby 为具有嵌套标记的自定义标记编写jekyll插件的问题
我正在尝试编写一个jekyll插件,添加一些标签来处理一些选项卡式块,因为我的网站将有很多页面具有此类块。我想在降价中轻松编辑它 我正在尝试使用以下液体代码:Ruby 为具有嵌套标记的自定义标记编写jekyll插件的问题,ruby,jekyll,liquid,Ruby,Jekyll,Liquid,我正在尝试编写一个jekyll插件,添加一些标签来处理一些选项卡式块,因为我的网站将有很多页面具有此类块。我想在降价中轻松编辑它 我正在尝试使用以下液体代码: {% tabs %} {% tab tab-1 %} Content of tab #1 {% endtab %} {% tab tab-2 %} Content of tab #2 {% endtab %} {% tab tab-3 %} Content of tab #3 {% en
{% tabs %}
{% tab tab-1 %}
Content of tab #1
{% endtab %}
{% tab tab-2 %}
Content of tab #2
{% endtab %}
{% tab tab-3 %}
Content of tab #3
{% endtab %}
{% endtabs %}
给出以下HTML代码:
<div class="tab-content">
<div class="tab-pane" id="tab-1">
Content of tab #1
</div>
<div class="tab-pane" id="tab-2">
Content of tab #2
</div>
<div class="tab-pane" id="tab-3">
Content of tab #3
</div>
</div>
表1的内容
表2的内容
表3的内容
这是我的插件:
module Tags
class TabsBlock < Liquid::Block
def render(context)
'<div class="tab-content">' + super + "</div>"
end
end
class TabBlock < Liquid::Block
def initialize(tag_name, tab, tokens)
super
@tab = tab.strip
end
def render(context)
return "" if @tab.empty?
site = context.registers[:site]
converter = site.getConverterImpl(Jekyll::Converters::Markdown)
content = super.strip
content = converter.convert(content)
'<div id="' + @tab + '" class="tab-pane">' + content + "</div>"
end
end
end
Liquid::Template.register_tag("tabs", Tags::TabsBlock)
Liquid::Template.register_tag("tab", Tags::TabBlock)
模块标签
类TabsBlock
当我尝试时,标记是不正确的。
只有第一个选项卡的标记是我所期望的,其他选项卡通过代码highlighter传递,我得到:
<div class="highlight">
<pre><code class="text language-text" data-lang="text"><div id="tab-1" class="tab-pane"><p>Content of tab #1</p></code></pre>
</div>
div id=“tab-1”class=“tab pane”p选项卡的内容/p
我不知道为什么,我也不知道如何用Ruby/Liquid自己处理:)。
有什么想法吗
谢谢 我不知道为什么,但Jekyll或Liquid认为,鉴于缩进,这是Highlitht的一些代码 我通过再次剥离标记转换代码以删除换行符并删除一些缩进来解决此问题:
getConverterImpl
class TabBlock0}
缩进=线条。贴图do |线条|
match=line.match(/^(\s+[^\s]+/)
比赛?匹配[1]。大小:0
结束
缩进=缩进.min
内容=缩进?super.gsub(/^#{'|\t'*indentation}/,''):super
内容=转换器。转换(内容)
content=content.strip#再次剥离以避免“\n”
“”+内容+“”
结束
结束
这太棒了。对于任何遇到此问题的人:
更改:
find_converter_instance
到
find_converter_instance