Skip to content
 
 

Repository files navigation

RenderCSV

Учебный проект на C++23 (без модулей).

Цель

Консольное приложение, конвертирующее CSV-файлы в таблицы, оформленные в Markdown или HTML.

Сборка

Поддерживаемые компиляторы:

  • g++ 15.2 (Linux/Windows)
  • MSVC 2022 (v.17.14 или новее)

Первоначально предполагалось использовать модули C++ и import std, но это приводит к затруднениям при сборке и работе. В итоге, было решено отказаться от использования модулей и вернуться к "традиционной" схеме заголовочных файлов (hpp) и единиц трансляции (cpp).

Сборка:

  • При использовании MSVC можно открыть RenderCSV.sln из директории проекта и работать там.
  • Meson. Если Meson установлен, можно осуществить сборку проекта и тестов и запуск тестов вызовом build.cmd (Windows).

Общая структура

В процессе работы требуется выполнить три действия:

  1. Прочитать конфигурацию (постановка задачи конвертирования).
  2. Прочитать исходные CSV-файлы.
  3. Записать результирующий MD или HTML-файл (и, возможно, CSS-файл)

Конфигурация

Для данной задачи достаточно передавать всю конфигурацию параметрами командной строки. Предполагается поддержка следующих параметров:

Вспомогательные

без параметров — вывод сообщения с предложением ввести параметр --help;

--help — вывод справочной информации;

--version — вывод информации о версии и репозитории размещения;

Режим вывода

--md — режим генерации Markdown (по умолчанию GFM);

--md=gfm — режим Github Flavored Markdown;

--html — режим генерации HTML, эквивалентен --html=full;

--html=part — генерация только кода таблиц HTML, не добавлять обрамление;

--html=full — генерация полного файла HTML, который можно открыть в браузере;

--html=full-styled — генерация полного файла HTML с внедрением CSS.

HTMLv5. Все эти параметры взаимоисключающие.

Режим записи в целевой файл

--overwrite — перезаписать целевой файл;

--append — дописать результат в конец целевого файла;

--prepend — приписать результат к началу целевого файла.

Если ни один из этих параметров не задан, а целевой файл существует, то сообщаем ошибку. Из этих параметров может быть задано не более одного.

Ввод-вывод

-c caption или --caption caption — задать заголовок следующей таблицы;

-i input или --in input — задать входной CSV-файл, input — имя файла; должно быть не менее одного файла;

--many — указать перед параметром ввода, если далее стоит несколько входных файлов и мы хотим их все записать в один целевой файл — открыть группу, закрываемую выходным файлом; если данный параметр не указать, то каждый вводный файл будет записываться в отдельный целевой файл, имя которого то же, что и у входного файла с заменой расширеня на .md или .html;

-o output или --out output — опциональный параметр, задающий целевой файл output; должен стоять после входного файла;

-h header или --head header — вставить содержимое заданного файла header перед таблицами в вывод;

-m middle или --mid middle — вставлять содержимого заданного файла middle между таблицами в вывод, если комбинируется несколько входных файлов в один целевой;

-f footer или --foot footer — вставить содержимое заданного файла footer после таблиц в вывод;

--css style — использовать стилевой файл style в режиме HTML (по ссылке или внедрить).

About

Учебный проект. Конвертор CSV в MD/HTML/может быть, что-нибудь ещё.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages