如何将扩展传递给 Redcarpet Nanoc 过滤器

Posted

技术标签:

【中文标题】如何将扩展传递给 Redcarpet Nanoc 过滤器【英文标题】:How do I pass an extension to the Redcarpet Nanoc filter 【发布时间】:2011-12-24 16:16:47 【问题描述】:

我正在尝试使用他们的 :redcarpet 过滤器过滤 Nanoc 3 中的内容。我的代码如下所示(来自规则文件):

compile '/posts/*/' do
    filter :redcarpet
    layout 'default'
end

我想将选项 :fenced_code_blocks 传递给 redcarpet 扩展,以便我可以突出显示语法。我找不到如何执行此操作的示例。 https://github.com/tanoku/redcarpet 描述了在使用 redcarpet 时如何做到这一点。 Nanoc 的文档表明我可以传递选项,http://nanoc.stoneship.org/docs/api/3.2/Nanoc3/Filters/Redcarpet.html,但我尝试过的没有任何效果。

以下是一些不起作用的东西:

filter :redcarpet, :fenced_code_blocks => true
filter :redcarpet, :options => [:fenced_code_blocks]
filter :redcarpet,  :options => [:fenced_code_blocks] 
filter :redcarpet,  :options =>  :fenced_code_blocks => true  
filter :redcarpet,  :options => [ :fenced_code_blocks => true ] 
filter :redcarpet,  :fenced_code_blocks => true 

其中很多看起来不像真正的红宝石,而且只是在黑暗中刺伤。我实际上不知道规则文件中发生了什么样的 DSL 魔法。任何帮助表示赞赏。

【问题讨论】:

【参考方案1】:

Nanoc 3.3 supports Redcarpet 2,设置组合现在为filter :redcarpet, :options => :fenced_code_blocks => true

【讨论】:

【参考方案2】:

使用 Redcarpet 1.x,您可以使用 :options => [ :foo, :bar, :baz ] 传递选项,但似乎只有 Redcarpet 2.x 支持围栏代码块,并且 nanoc 尚不支持 Redcarpet 2.x。

很遗憾,我无法测试 Redcarpet 2 和 nanoc 集成,因为 Redcarpet 2 导致 Ruby 出现段错误...

丹尼斯

【讨论】:

以上是关于如何将扩展传递给 Redcarpet Nanoc 过滤器的主要内容,如果未能解决你的问题,请参考以下文章

如何扩展 Middleman 的 Redcarpet Markdown 渲染器?

:footnotes 扩展在 Redcarpet Ruby gem 中不起作用

如何使用扩展语法将数组传递给 JavaScript 中的方法

如何在不将道具传递给底层 DOM 元素的情况下扩展样式组件?

[Catel]如何将带有构造函数参数的 ViewModel 传递给 TabService 扩展方法?

是否可以将 Redcarpet 扩展为从链接自动嵌入 youtube 视频?