我正在尝试编写一个jekyll插件来添加一些标签来处理一些标签块,因为我的网站会有很多页面都有这种块。我想在markdown中轻松编辑它。
我正在尝试使用这种液体代码:
{% 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>
这是我的插件:
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)
当我尝试时,标记不正确。 只有第一个标签的标记是我所期待的,其他标签通过代码荧光笔传递,我得到:
<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>
我不知道为什么而且我在Ruby / Liquid中不太了解它自己处理它:)。 有什么想法吗?
谢谢!
答案 0 :(得分:2)
我不知道为什么,但是Jekyll或Liquid认为,鉴于缩进,这是一些高亮度的代码。
我通过再次剥离降价转换代码来删除换行符并删除一些缩进来解决这个问题:
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)
lines = super.rstrip.split(/\r\n|\r|\n/).select { |line| line.size > 0 }
indentation = lines.map do |line|
match = line.match(/^(\s+)[^\s]+/)
match ? match[1].size : 0
end
indentation = indentation.min
content = indentation ? super.gsub(/^#{' |\t' * indentation}/, '') : super
content = converter.convert(content)
content = content.strip # Strip again to avoid "\n"
'<div id="' + @tab + '" class="tab-pane">' + content + "</div>"
end
end
答案 1 :(得分:1)
太棒了。对于任何遇到此问题的人:
变化:
cellButton = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 30));
到
getConverterImpl