Как разрешаются вики-ссылки
Заметки ссылаются друг на друга двойными скобками, которые разрешаются на этапе сборки по множеству реально существующих заметок. Отрисованные результаты — id, псевдоним, подпись, якорь — выступают вживую на странице «Всё и сразу»; эта глава — о правилах разрешения, стоящих за ними.
§5.1Чем может быть цель
Цели не обязательно быть id заметки. Разрешение пробует по порядку: зеркало текущей локали (ссылка на одном из семнадцати сестринских изданий этой страницы приводит к изданию цели на том же языке и падает на каноническую заметку лишь там, где зеркала нет), затем точный id, затем псевдонимы, брендовые имена и заголовки — без учёта регистра. Эссе о садоводстве объявляет псевдоним tending, поэтому [[tending]] в каноническом издании приводит на ту же страницу. Якоря и подписи сочетаются, как и хочется: [[garden-craft#pruning]] ведёт прямо к разделу, [[garden-craft|эссе о садоводстве]] отрисовывает свой текст — и то и другое совмещается.
§5.2Мёртвые ссылки не роняют сборку
Ссылка на несуществующую заметку отрисовывается заметно мёртвой, с причиной в подсказке, а сборка пишет предупреждение. Для садов это осознанный выбор: ненаписанная заметка — приглашение, а не ошибка. Цель, совпавшая сразу с несколькими заметками, отрисовывается так же, с пометкой о неоднозначности. Гнили ссылок всё же место в CI — движковый CLI check-wikilinks разрешает каждую ссылку правилами самой библиотеки и в режиме --strict превращает мёртвые ссылки в ненулевой код выхода; именно так его запускает этот репозиторий (пять проверок).
§5.3Одна реализация — четыре потребителя
Страницы, живой предпросмотр редактора, импортёр инбокса и линт CI разрешают одним и тем же кодом — поэтому ссылка значит одно и то же всюду, а редактор может позволить себе щедрость: набор [[ в режиме редактирования вызывает автодополнение по id, заголовкам и псевдонимам.