Предоставьте функцию docpad.coffee через плагин

Я пытаюсь написать плагин docpad, который предоставляет функции запутывания электронной почты.

На данный момент у меня есть это:

extendTemplateData: ({templateData}) ->
  templateData.obfuscate = (emailAddress) ->
     return ### obfuscated ### emailAddress

Отлично, теперь я могу использовать <%- @obfuscate(mail) %> в своих эко-шаблонах.

Но то, что я хотел бы сделать, это что-то вроде этого

docpadConfig:
   templateData: 
      emailAddresses:
         support: obfuscate("[email protected]")

Так что я могу написать <%- @emailAddresses.support %>

Я также был бы в порядке с:

support: -> return obfuscate("[email protected]")

Итак, вопрос: как я могу сделать функцию обфускации доступной в этом месте?

Я также пытался получить к нему доступ через docpadConfig.templateData.obfuscate() безуспешно.


person bertvh    schedule 07.12.2013    source источник
comment
Куда вы поместили extendTemplateData:? Я пытаюсь сделать то же самое, что и у вас здесь, но я не понимаю, где разместить эту функцию. Это в плагине, который вы написали?   -  person Chris    schedule 01.04.2014
comment
Это событие docpad. См. здесь docpad.org/docs/events в разделе "Доступные события". Я использовал его в плагине, источник: github.com/bertvh/docpad-plugin-emailobfuscator/blob/master/src/   -  person bertvh    schedule 01.04.2014


Ответы (1)


Вы близко! Вы можете получить плагин templateData следующим образом:

templateData:
    emailAddresses:
        support: -> docpad.pluginsTemplateData.obfuscate("some test")
person Peter Flannery    schedule 07.12.2013
comment
Это работает .. Где вы это нашли? Не в документации, я полагаю. - person bertvh; 10.12.2013
comment
Я обычно нахожу эти скрытые вещи в исходниках по адресу github.com/bevry/docpad и/или отлаживаю с помощью узел-инспектор — github.com/node-инспекция/node-инспектор Строка, которая помог решить эту проблему здесь: github.com/bevry/ docpad/blob/master/src/lib/docpad.coffee#L590 - person Peter Flannery; 10.12.2013