Я не понял из вашего описания ничего. :)
Sumo 21.07.2015 18:06
Вы пишете про KISS, но придумываете какие-то сложные абстракции: гриды, слоты и пр. Почему-то решили, что junction-code нужен для шаблонизации, хотя это классические замыкания. Зачем так все усложнять не понятно совсем.
В общем, я хочу пройти путь велосипедостроения, не столько даже ради самого велосипеда, сколько, чтобы глубже понять вообще аспект шаблонизации и какие приемы удачны, а какие нет и почему.
Я не знаю способа сразу придумать удачное решение, пока не попробуете идею в реальных проектах.
Свой движок я делал исходя из той же самой идеи: лучший шаблонизатор для Парсера — сам Парсер. Сначала был реализован простейший механизм работы, который взят из PHP-ешного шаблонизатора Smarty. Взяли шаблон, напихали туда переменных и выполнили. Шаблон завернули в динамический класс, чтобы отделить его от кода основной программы, чтобы в шаблоне можно было не парится с глобальными переменными и шаблон можно было использовать несколько раз с разными данными в рамках одного запроса пользователя.
Потом оказалось, что надо сделать нормальную модульность. G_Z предложил добавить наследование. И все это надо делать прямо из шаблона. Так появились директивы #@base и #@import. Теперь можно выстроить сколь угодно сложную логику работы шаблона. При этом шаблоны — это все те же функции Парсера, разложенные по файликам. Поэтому перенести любой кусок шаблона в новый проект не проблема — просто копируем файлик и импортируем его в другом шаблоне.
p.s. В любом случае, надеюсь, что вы откроете исходный код своей библиотеки для сообщества. :)