簡體   English   中英

Jekyll / Liquid:使用參數創建自定義標簽/過濾器

[英]Jekyll/Liquid: Create custom tag/filter with parameters

我正在嘗試為我的基於Jekyll的網站編寫一個自定義標簽,該標簽會接收一個bibtex字符串並替換/刪除一些內容。

標簽會收到一個bibtex字符串,如下所示:

@article{heineman2001component,
title={Component-based software engineering},
author={Heineman, George T and Councill, William T},
journal={Putting the pieces together},
pages={5},
year={2001}
}

紅寶石代碼如下:

module Jekyll
  class RenderBibTag < Liquid::Tag
   def initialize(tag_name, input, tokens)
      super
      @input = input
   end

   def render(context)
      output = (@input)#.gsub(/\bjournal\b[\w\s= \{\-\.\,\(\)]+\},/,'')
      return output;
   end
  end
end

Liquid::Template.register_tag('render_bib', Jekyll::RenderBibTag)

按以下方式使用Jekyll模板中的標記可以正常工作

{%render_bib bibstring %} #bibstring is the string above

當我嘗試使用Jekyll變量時(例如,具有bibtex字符串的page.bibtex)

{%render_bib page.bibtex %} 

它不能識別/傳遞字符串。

有什么想法嗎?

我發現的解決方案使用過濾器而不是標簽

(第一次回答我自己的問題)

module Jekyll
  module BibFilter
    REGEXP = /\bjournal\b[\w\s= \{\-\.\,\(\)\-\:\+\'\/\..]+\},?/

    def bibFilter(bib)
      #filter text using regexp
      str = "#{bib}".gsub(REGEXP,'')
      #print filtered text
      "#{str}"
    end
 end
end

Liquid::Template.register_filter(Jekyll::BibFilter)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM