1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dknlnl-oneLineTemplate

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 2.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 17.03.2025 03:18 80d2e0e

#oneLineTemplate

Простое описание

Ранее в работе Шэнь Юйюй часто возникали небольшие требования по изменению выходных файлов. Раньше он просто жёстко закодировал изменения прямо в коде. Однако однажды Юйюй осознал, что это слишком примитивно, поэтому решил внедрить скриптовый язык, такой как Tcl, Lua или Python.

Однако включение открытого исходного кода в коммерческий продукт было сложной задачей, а также ему требовалась лишь базовая функциональность "шаблона". Таким образом, был создан шаблон, который можно записывать в конфигурационный файл; программа читает этот шаблон из файла конфигурации, раскрывает его, и таким образом нет необходимости каждый раз перезаписывать код при изменении выходных данных.

Реализация метода

Конфигурация шаблона выглядит следующим образом:

abcd{VAR1}dfdadf{VAR2}

Переменные заключаются в фигурные скобки, а константы записываются напрямую. Это похоже на синтаксис SHELL, но без $, так как наличие лишнего $ усложняет парсинг, а также это не обязательно.Этот шаблон анализируется (алгоритмы анализа см. в xls) и преобразуется в односвязный список, где каждый узел либо является константой, либо переменной. Переменная хранится как индекс в таблице символов, и при раскрытии шаблона значение берется из таблицы символов по этому индексу. Таблица символов представляет собой массив пар "имя переменной" - "значение переменной", и при анализе каждое имя константы ищется в этом массиве для получения индекса в таблице символов.В коде значения в таблице символов могут быть изменены напрямую, чтобы контролировать содержание после раскрытия шаблона.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dknlnl-oneLineTemplate.git
git@api.gitlife.ru:oschina-mirror/dknlnl-oneLineTemplate.git
oschina-mirror
dknlnl-oneLineTemplate
dknlnl-oneLineTemplate
master