Как настроить вспомогательные функции docpad.coffee для создания коллекции?

Для коллекций я хотел бы использовать помощники, определенные в docpad.coffee, например

getLang: (inLang) ->
    "/" + inLang  + "/"
...
myCollection: ->
        @getCollection("html").findAllLive().on "add", (model) ->
           model.setMeta({ url: @getLang("en") + defaultUrlPartGoesHere })

но не могу заставить FilesCollection узнать моего помощника:/

Как настроить вспомогательные функции, чтобы они стали доступными для определения коллекции?


person stackasec    schedule 08.10.2013    source источник


Ответы (2)


Ссылка на docpadConfig.templatedata.getLang() будет работать, но если вам это неприятно, помните, что docpad.coffee — это просто стандартный модуль NodeJS (написанный на coffeescript). Вы также можете определить свою функцию вне литерального объекта docpadConfig, а затем вытащить ее в свой templateData (при условии, что она вам нужна для шаблонов) и использовать ее при создании своей коллекции.

Например:

# define the function outside of the config object
getLang: (inLang) ->
    "/" + inLang  + "/"

docpadConfig = {
    templateData:
        getLang: getLang # reference the previously defined function

    collections:
        myCollection: ->
            # use the previously defined function
            @getCollection("html").findAllLive().on "add", (model) ->
                model.setMeta({ url: getLang("en") + defaultUrlPartGoesHere })  
}
person Erv Walter    schedule 10.10.2013

Mh, не (самый) элегантный способ, но используя абсолютный путь в docpad.coffee, я могу сослаться на него, например. docpadConfig.templateData.getLang(...), если он определен в templateData.

person stackasec    schedule 08.10.2013