DocPad: Как предотвратить конфликты плагинов рендеринга?

Я пишу свой первый плагин для DocPad, и мне очень нравится этот процесс, потому что он довольно интуитивно понятен.

Мой плагин использует shortcode-parser для разбора коротких кодов в моих уцененных документах.

Вот моя проблема:

marked-plugin для DocPad преобразует " в ", что вполне ожидаемо. Однако это ломает мой плагин, потому что то, что было [tagname attribute="some value"], становится [tagname attribute="some value"].

Возможное решение:

Уже существует плагин, который обрабатывает шорткоды. Он обходит эту проблему, используя расширение файла. Причина, по которой я написал свой собственный плагин, заключалась (помимо изучения DocPad) в том, что я не хочу добавлять расширения файлов к сотням документов только для того, чтобы включить мой плагин.

Есть ли какая-либо чистая альтернатива, помимо использования расширений файлов для предотвращения конфликтов плагинов рендеринга? Если бы был, например, атрибут конфигурации для указания порядка, в котором выполняются плагины рендеринга, я бы рассмотрел это довольно хорошее решение.


person Macks    schedule 08.03.2014    source источник


Ответы (2)


Я просто пошел с использованием расширений. Полученный плагин можно найти здесь, если кому-то интересно: https://github.com/maximilianschmitt/docpad-plugin-shortcodeparser

Если у кого-то есть лучшая идея для решения такой проблемы, пожалуйста, дайте мне знать!

person Macks    schedule 09.03.2014

Я думаю, было бы удобно иметь плагин, который мог бы предоставлять предопределенные конвейеры.
Например:

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']})
}
person glukki    schedule 10.03.2014