TwigJS фикс инлайновых макросов
Речь пойдет о https://github.com/justjohn/twig.js, этот шаблонизатор почти полностью подходит под мои задачи, но просто взять и использовать его без express невозможно, т.к. в inline режиме не работают from и import.
JS implementation of the Twig Templating Language. Contribute to twigjs/twig.js development by creating an account on GitHub.
Гугление ничего не дало, пришлось взяться за исходники и пройтись дебагером. В ходе раскопок выяснилось следующее:
С настройкой allowInlineIncludes работают только блоки и инклуды Macro скомпилировать можно, но импортировать их нельзя, как не старайся. Под капотом импорт безапелляционно стучится через ajax, и ничего там нет про то, что можно бы и в кеше посмотреть. Видимо забыли или еще чего.
Это довольно легко исправляется добавлением пары строчек в Twig.Template.prototype.importMacros:
Twig.Template.prototype.importMacros = function(file) {
if(this.options.allowInlineIncludes){
return this.importFile( file );
}
....
}
Если у нас стоит настройка allowInlineIncludes импортить файл как обычный нашблон, можно еще заморочиться и добавить в условие отсутствие урла или пути, но этого у меня в задаче не было)