DocPad:如何防止渲染插件的冲突?

时间:2014-03-08 02:33:43

标签: javascript node.js markdown shortcode docpad

我正在为DocPad编写我的第一个插件,我真的很喜欢这个过程,因为它实际上非常直观。

我的插件使用shortcode-parser来解析我的markdown-documents中的短代码。

这是我的问题:

DocPad的marked-plugin会将"转换为",这是完全预期的行为。但是,这会破坏我的插件,因为[tagname attribute="some value"]变为[tagname attribute="some value"]

可能的解决方案:

那里已经有a plugin来处理短代码。它通过使用文件扩展名来解决此问题。我编写自己的插件的原因是(除了学习DocPad之外)我不想为了启用我的插件而为数百个文档添加文件扩展名。

除了使用文件扩展名以防止渲染插件发生冲突外,还有其他干净的选择吗?例如,如果有一个配置属性来指定渲染插件执行的顺序 - 我认为这是一个非常好的解决方案。

2 个答案:

答案 0 :(得分:0)

我刚刚使用扩展程序。如果有人对此感兴趣,可以在此处找到生成的插件:https://github.com/maximilianschmitt/docpad-plugin-shortcodeparser

如果有人有更好的想法来解决这类问题,请告诉我们!

答案 1 :(得分:0)

我认为拥有一个可以提供预定义管道的插件会很方便 例如:

docpadConfig = {
    plugins:
        PLUGIN:
            main: '.html.md.eco'
}

此扩展程序.main的插件文档可以像处理扩展程序'.html.md.eco'一样进行处理。

不确定,但也许可以通过这样的查询替换管道:

docpadConfig = {
    collections:
        _main: ->
            @getCollection('html').findAllLive({extension:'main', }).on 'add', (model) ->
                model.setMeta({extensions:['html', 'md', 'eco']})
}