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生成器的原因。如果你来自谷歌,你最有可能为你的答案写一个更好的问题。请这样做!!自我回答问题对于整个社区来说是非常有用的。