Ruby 将多个参数传递给jekyll中的自定义插件

Ruby 将多个参数传递给jekyll中的自定义插件,ruby,jekyll,liquid,jekyll-extensions,Ruby,Jekyll,Liquid,Jekyll Extensions,我正在与杰基尔合作制作一个网站。 我用ruby构建了自定义的内容表插件 这是密码 需要“nokogiri” 杰基尔模块 模块发电机 TOC_CONTAINER_HTML='%1' def toc(html,op) toc_top_tag=“h1” 项目编号=0 toc_html=“” sub_url=html['url'] doc=Nokogiri::HTML(HTML['content']) doc.css(toc_top_标记)。每个do|标记| toc_html+=创建_级别_html(子

我正在与杰基尔合作制作一个网站。
我用ruby构建了自定义的内容表插件

这是密码

需要“nokogiri”
杰基尔模块
模块发电机
TOC_CONTAINER_HTML='
    %1
' def toc(html,op) toc_top_tag=“h1” 项目编号=0 toc_html=“” sub_url=html['url'] doc=Nokogiri::HTML(HTML['content']) doc.css(toc_top_标记)。每个do|标记| toc_html+=创建_级别_html(子url,标记['id'],tag.text) 项目编号+=1 结束 返回“”,除非项目编号>0 如果0<项目编号 toc_table=toc_CONTAINER_HTML .gsub(“%1”,目录html) 结束 结束 私有的 def create_level_html(url、锚定id、文本) 链接=“” .gsub(“%1”,url) .gsub(“%2”,锚定id到) .gsub(“%3”,文本) “
  • %1
  • ” .gsub(“%1”,链接) 结束 结束 结束 液体::模板。注册过滤器(Jekyll::TOCGenerator)
    在一些文件中

    <div>
    {{ page | toc }}
    </div>
    
    但当我在jekyll模板中调用函数时,会出现如下错误

      Liquid Exception: Liquid error (line 41): wrong number of arguments (given 1, expected 2) in /_layouts/default.html
    
    我尝试了
    {(三,1)| toc}}
    {three,1 | toc}
    {three | 1 | toc}
    用两个参数调用函数,但结果是一样的

    我如何用多参数调用jekyll中的function


    感谢高级版。

    这个答案不太可能与原始海报相关,但如果有人像我一样从谷歌来到这里,下面是我如何解决的

    插件代码:

    module Jekyll
      module YourFilter
        def yourFilter( input, arg1, arg2 )
          # your code
        end
      end
    end
    
    Liquid::Template.register_filter(Jekyll::YourFilter)
    
    内容中的标记代码:

    {{ 'Lorem ipsum' | yourFilter: 'argument 1', 'argument 2' }}
    

    关键是标记代码中的过滤器名称后面有一个分号。这似乎允许插件解析多个参数,而不仅仅是最后一个参数。

    你知道kramdown有一个TOC函数可以满足你的需要吗?参见@DavidJacquel,我已经知道
    kramdown
    具有toc功能。据我所知,kramdown的toc功能只能在同一文档中使用。在我看来,生成toc的目的是在另一个页面中呈现toc,这就是我用ruby构建自定义toc生成器的原因。如果你来自谷歌,你最有可能为你的答案写一个更好的问题。请这样做!!自我回答问题对于整个社区来说是非常有用的。