Grunt-Replace для скомпилированных шаблонов электронной почты

Я использую Ли Манро хрюкать-электронный документооборот создать набор шаблонов электронной почты для PHP-фреймворка, который не имеет шаблонизатора, то есть: он использует необработанные переменные php <?= $firstname; ?> и т.д., в шаблонах.

Все шло хорошо, пока я не попытался реализовать эти переменные в источниках электронной почты, а потом обнаружил, что assemble душит и выбрасывает ошибки каждый раз, когда сталкивается с переменной.

gruntfile для этого проекта уже включены grunt-replace поэтому я подумал сделать замену текста, который не будет проанализирован handlebars лайк ## item ## и превратить его в фигурные скобки {{ item }}затем я могу использовать Twig в приложении PHP для анализа PHP.

Моя проблема в том, что я не могу решить replacement часть grunt-replace,

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

Пока у меня есть это:

replace: {
dist: {
options: {
usePrefix: false,
patterns: [
{
match: /\##[^##]*\##/g,
replacement: ???????
}
]
},
files: {
expand: true,
flatten: true,
src: ['<%= paths.dist %>/**/*.html'],
dest: '<%= paths.dist %>/'
},
}
}

ОБНОВИТЬ:

После некоторых дополнительных попыток у меня есть это:

replace: {
dist: {
options: {
usePrefix: false,
patterns: [
{
match: /\##[^##]*\##/g,
replacement: '{{ $1 }}'
}
]
},
files: [
{
expand: true,
flatten: true,
src: ['<%= paths.dist %>/front/*.html'],
dest: '<%= paths.dist %>/front/'
},
{
expand: true,
flatten: true,
src: ['<%= paths.dist %>/back/*.html'],
dest: '<%= paths.dist %>/back/'
}
]
}
}

В моих скомпилированных шаблонах ## firstname ## теперь заменяется {{ $1 }}

Как получить значение содержимого в соответствующих тегах для замены?

2

Решение

Вам просто нужно использовать группу захвата (круглые скобки, круглые скобки) вокруг шаблона, который вам нужен для захвата значения, и конструкцию, которая будет соответствовать любому количеству любых символов от ## до ближайшего ##:

Либо используйте ленивую конструкцию:

match: /##([^#]*(?:#(?!#)[^#]*)*)##/g

Или используйте развернутую версию:

match: /##([\s\S]*?)##/g
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]