I just went with using extensions. The resulting plugin can be found here, if anybody's interested: https://github.com/maximilianschmitt/docpad-plugin-shortcodeparser
If anybody has a better idea to solve this kind of issue, please let me know!
题
I'm writing my first plugin for DocPad and I'm really enjoying the process because it's actually pretty intuitive.
My plugin uses shortcode-parser to parse shortcodes in my markdown-documents.
The marked-plugin for DocPad converts "
to "
, which is totally expected behaviour. However, this breaks my plugin because what was [tagname attribute="some value"]
becomes [tagname attribute="some value"]
.
There is already a plugin out there that handles shortcodes. It circumvents this problem by using a file-extension. The reason I wrote my own plugin was (aside from learning DocPad) that I don't want to have to add file extensions to hundreds of documents just to enable my plugin.
Are there any clean alternative besides using file-extensions to prevent render-plugins from clashing? If there was, for example, a configuration-attribute to specify the order in which render-plugins execute – I would consider that a pretty good solution.
解决方案
I just went with using extensions. The resulting plugin can be found here, if anybody's interested: https://github.com/maximilianschmitt/docpad-plugin-shortcodeparser
If anybody has a better idea to solve this kind of issue, please let me know!
其他提示
I think it would be handy to have a plugin, that could provide predefined pipelines.
For example:
docpadConfig = {
plugins:
PLUGIN:
main: '.html.md.eco'
}
With this plugin document with extension .main
could be processed as if it had extensions '.html.md.eco'.
Not sure, but maybe it's possible to replace pipeline by some query like this:
docpadConfig = {
collections:
_main: ->
@getCollection('html').findAllLive({extension:'main', }).on 'add', (model) ->
model.setMeta({extensions:['html', 'md', 'eco']})
}