मैं कुछ टैबड ब्लॉक को संभालने के लिए कुछ टैग जोड़ने के लिए एक जेकिल प्लगइन को कोड करने की कोशिश कर रहा हूं क्योंकि मेरी वेबसाइट में इस तरह के ब्लॉक वाले बहुत सारे पेज होंगे। मैं इसे आसानी से मार्कडाउन में संपादित करना चाहता हूं।
मैं इस तरल कोड का उपयोग करने की कोशिश कर रहा हूँ:
{% 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 %}
यह एचटीएमएल कोड देना:
<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>
मुझे नहीं पता कि क्यों और मुझे रूबी / तरल पदार्थ में खुद को संभालने के लिए बहुत कुछ नहीं पता :)। कोई उपाय?
धन्यवाद!
उत्तर:
जवाब के लिए 2 № 1मुझे नहीं पता क्यों, लेकिन जेकील या तरल ने माना कि, इंडेंटेशन दिया गया है, यह कुछ कोड था।
मैंने लाइन ब्रेक को हटाने और कुछ इंडेंटेशन को हटाकर फिर से मार्कडाउन रूपांतरित कोड को अलग करके इसे हल किया:
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(/rn|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
उत्तर № 2 के लिए 1
यह शानदार है। जो भी इस पर आता है उसके लिए:
परिवर्तन:
getConverterImpl
सेवा मेरे
find_converter_instance