Навигация: как работают сгенерированные файлы
Для каждой локали четыре навигационных артефакта генерируются из тем этой локали и не пишутся вручную (плюс README.md, который генерируется один раз для эталонной локали, en-gb-oxendict):
README.md(оглавление на главной странице репозитория; только эталонная локаль)locales/<locale>/index.md(главная страница опубликованного сайта)locales/<locale>/front-matter/table-of-contents.mdlocales/<locale>/topics/09-07-index.md(предметный указатель тем, со ссылками)
Все они создаются инструментом tools/gen_nav.py.
Не правьте их вручную: следующая генерация перезапишет ваши изменения.
Когда перегенерировать
Запускайте just nav (или python3 tools/gen_nav.py) всякий раз, когда вы:
- добавляете, удаляете, переименовываете или перенумеровываете тему, или
- меняете заголовок
# N.M Titleтемы (оглавление его использует).
Сначала запустите python3 tools/localize.py, если меняли что-либо в locales/en-gb-oxendict/, чтобы темы остальных трёх локалей (и порождаемые ими заголовки) были актуальны
до того, как их прочтёт gen_nav.py; см. spec/locales.md.
Как это работает
Для каждой локали gen_nav.py читает каждый файл locales/<locale>/topics/*.md, сортирует по десятичному номеру, группирует по частям и:
- строит оглавление по частям из заголовка H1 каждой темы,
- записывает его в
locales/<locale>/index.mdиlocales/<locale>/front-matter/table-of-contents.md(и, только для эталонной локали,README.md), - просматривает содержательные темы (части 1 до 8) на предмет фиксированного списка ключевых терминов и записывает предметный указатель в
locales/<locale>/topics/09-07-index.md.
Общий шаблонный текст (вводные абзацы, «Как читать эту книгу», «Сквозные темы» и названия частей) локализуется так же, как проза тем,
через функции локалей tools/localize.py, так что сгенерированные страницы естественно читаются в каждой локали.
Названия частей живут в словаре PART_TITLES ближе к началу скрипта. Генератор использует заголовки частей в стиле с двоеточием («Part 2: Delivery and Flow Metrics»),
никогда не длинное тире.
Для переведённых вручную локалей главная страница и страница оглавления пишутся вручную (переведённые заголовки и вводная строка N.0 каждой части), а tools/gen_translated_nav.py обновляет список тем по заголовкам H1 тем этой локали.
Чего он не трогает
Спецификация в корне репозитория (spec/index.md, spec/structure.md и их спутники) это рукописный источник истины. Генератор её не пишет, и она не часть опубликованного сайта.
Если вы меняете структуру, обновите spec/structure.md сами, затем запустите just nav для производных файлов и just test, чтобы убедиться, что всё согласовано.