Package: d2doc
d2docГенерация документации на основании входных файлов с данными и шаблонов выходных документовВозможностиРабота в ОС:Linux,Mac OS X,Windows;Формат шаблоновjinja2;Формат файлов входных данныхxml,json,yaml,bsl.СтатикаУстановка и обновлениеУстановить Python версии не ниже 3.6;Установить пакет d2doc из PyPI командой:pipinstalld2docДля обновления пакета необходимо воспользоваться командой:pipinstall-Ud2docИспользование скриптаUsage: d2doc [OPTIONS] COMMAND [ARGS]...

Options:
  --log-level TEXT  Log level [CRITICAL, FATAL, ERROR, WARNING, DEBUG, INFO,
                    NOTSET]                 
  --help            Show this message and exit.

Commands:
  buildИспользование командыbuildUsage: d2doc build [OPTIONS]

Options:
  -t, --templates PATH        Path to template files.
  -s, --start-templates TEXT  Root templates separated by comma.
  -f, --data-file FILE        Input data file (Global for all templates).
  -d, --data-dir PATH         Input data dir (Global for all templates).
  -m, --data-dir-mask TEXT    Files mask for option '--data-dir-mask'.
  -o, --output-dir PATH       Output dir for documentation.
  --erase-output-dir          Erase output dir befor build.
  --output-format TEXT        File extention for output files.
  --transliterate-urls        Transliterate urls.
  --static PATH               Dir with static files to copy in output (multiple).
  --help                      Show this message and exit.Пример использования скрипта в Linuxd2docbuild\--templates'./test/test1/templates'\--start-templates'Оглавление'\--data-dir'./test/test1/data'\--data-dir-mask'**/*.json'\--output-dir'./test/test1/doc'\--static'./test/test1/static'\--erase-output-dirПример использования скрипта в Linux c использованием переменных средыexportD2DOC_BUILD_TEMPLATES='./test/test1/templates'exportD2DOC_BUILD_START_TEMPLATES='Оглавление'exportD2DOC_BUILD_DATA_DIR='./test/test1/data'exportD2DOC_BUILD_DATA_DIR_MASK='**/*.json'exportD2DOC_BUILD_OUTPUT_DIR='./test/test1/doc'exportD2DOC_BUILD_STATIC='./test/test1/doc/static'exportD2DOC_LOG_LEVEL='DEBUG'd2docbuild--erase-output-dirШаблоныДля рендера страниц используется движокjinja2Вспомогательные функцииФункции для использования в шаблонах (плюсом к разнообразию функцийjinja2)tolistИспользуется для обработки коллекций из файлов xml в jinja2, когда возможен только один элемент в колекции. Если передан один объект, то возвращается список с этим объектом.tolist(obj_or_list)ParameterRequareDescriptionobj_or_listДаСписок произвольных объектов или произвольный объектПример:{% set config_xml = from_file("./configuration.xml") %}
{% set config_props = config_xml.MetaDataObject.Configuration.Properties %}
{% for role in tolist(config_props.DefaultRoles['xr:Item']) %}
    * {{role['#text']}}\\
{% endfor %}urlИспользуется для построения внутренних ссылок.url(url,target_template,data, [other])ParameterRequareDescriptionurlДаШаблон ссылки в формате jinja2target_templateДаИмя файла шаблона, по которому должна генерироваться ссылкаurlurlДаДанные для передачи в шаблонtarget_templateotherНетПрочие параметры для рендера ссылки по шаблонуurlПример:[Справочник {{ name }}]({{ url(url = 'sprs/{{ name }}.md', target_template = 'spr.j2', data = spr, name='Users') }})

Результат:
[Справочник Users](sprs/Users.md)from_fileПолучение данных из файла. Поддерживаемые форматыxml,json,yaml,bslfrom_file(file, format)ParameterRequareDescriptionDefaultfileДаПуть к файлу данныхformatНетФормат файла (xml,json,yaml,bsl)Определяется по расширению файлаПример:{% set s2 = from_file("./test/test1/data/s2.json") %}
...
далее используем переменную s2from_dirПолучение данных из каталога с файлами данных. Файлы данных объединяются в единый объект данных в памяти. Поддерживаниемые форматыxml,json,yaml,bslfrom_dir(path, mask)ParameterRequareDescriptionpathДаПуть к каталогу с файлами данныхmaskДаМаска файлов (форматglob).Пример:{% set s1 = from_dir("./test/test1/data", '**/*.json') %}
{% set s2 = from_dir("./test/test1/data", '**/*') %}
...
Далее используем переменную s1 и s2. 
Имена вложенных каталогов и имена файлов встраиваются в выходную структуру. 
Точка (.) в именах файлов (включая расширение файла) и каталогов заменяется на _