Skip to content

Latest commit

 

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Это учебный проект

Генератор текста на основе шаблонов

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


Возможности

  • Подстановка значений в метки вида {{ переменная }}
  • Чтение данных из файла в формате КЛЮЧ=ЗНАЧЕНИЕ
  • Поддержка комментариев в файле данных (# и //)
  • Игнорирование лишних пробелов вокруг имён переменных и знака =
  • Гибкая обработка повторяющихся ключей (последнее значение имеет приоритет)
  • Настраиваемый путь к выходному файлу или вывод в стандартный поток
  • Понятные коды ошибок для интеграции в скрипты

Использование

generator --template=ФАЙЛ_ШАБЛОНА --data=ФАЙЛ_ДАННЫХ [--output=ВЫХОДНОЙ_ФАЙЛ]

text

Аргументы командной строки

Короткий Длинный Обязательный Описание
-t --template=путь Путь к файлу шаблона
-d --data=путь Путь к файлу с данными
-o --output=путь Путь к выходному файлу (если не указан – вывод в stdout)

Формат файлов

Файл шаблона (--template)

Обычный текстовый файл, содержащий метки подстановки в двойных фигурных скобках: Привет, {{ name }}! Ваш заказ №{{ order_id }} готов.

text

Пробелы внутри скобок по краям имени игнорируются.

Файл данных (--data)

Каждая строка содержит одну переменную в формате КЛЮЧ=ЗНАЧЕНИЕ.
Пробелы вокруг = и в начале/конце строки не учитываются.

Строки, начинающиеся с # или //, считаются комментариями и пропускаются.

Допустимые символы: латиница, цифры, подчёркивание.
Ограничения: ключ и значение – одиночные слова, длина не более 100 символов, количество пар не более 1024.

Пример: name=Иван order_id=12345

это комментарий // тоже комментарий

text

При повторном определении ключа последнее значение заменяет предыдущее.


Коды возврата

Код Значение
0 Успешное завершение
1 В шаблоне присутствует метка, для которой нет значения в данных
2 Ошибка в аргументах командной строки (отсутствуют обязательные параметры, неверный формат)
3 Ошибка ввода-вывода (не удалось открыть/прочитать/записать файл)
4 Синтаксическая ошибка в шаблоне (незакрытая метка, некорректные фигурные скобки)
5 Прочие ошибки

Пример

Шаблон (template.txt): Уважаемый(ая) {{ user }}!

Ваша заявка №{{ ticket_id }} принята. Спасибо, что пользуетесь нашим сервисом.

text

Данные (data.dat): user=Мария ticket_id=98765

text

Команда: generator -t template.txt -d data.dat -o output.txt

text

Результат (output.txt): Уважаемый(ая) Мария!

Ваша заявка №98765 принята. Спасибо, что пользуетесь нашим сервисом.

text


Сборка

Для компиляции достаточно стандартного C++ компилятора. Проект использует только стандартную библиотеку C++.

g++ -std=c++17 -o generator main.cpp

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages