По движку публикации базы знаний в Web podlite-web из набора файлов есть хороший прогресс в развитии. Он заключается в том, что сейчас можно не только публиковать свою базу знаний из набора статических файлов используя единый шаблон, но и расширять функционал создаваемых web сайтов с помощью плагинов и подключаемых внешних javascript библиотек.

Все началось с мысли о том, что неплохо бы дать возможность пользователю расширять функционал страниц. Например подключить какую-нибудь библиотеку UI компонент или добавить логики на страницу.

Для себя я видел в этом возможность делать эксперименты и разрабатывать новую логику отдельно от основного пакета.

Например давно хотелось сделать предметный указатель по базе знаний (он же, если я не ошибаюсь - Index of Terms). Я понимал, что это не тоже самое что предметный указатель для книги, где есть нумерация страниц, и возможно будет несколько попыток, пока не получиться удовлетворительный результат.

Хотелось сделать поиск. Также есть в планах добавить визуализацию связей, что тоже потребует экспериментов.

Таким образом список требований к результату был более менее конкретизирован.

В качестве практической задачи я взял идею построения базы знаний для Raku комьюнити на основе проектов, разбросанных по разным репозиториям - официальной документации, проекту примеров кода, а также всех пользовательских библиотек/модулей.

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

Поскольку Podlite поддерживает markdown, то в базу знаний попали также все дополнительные файлы, сопровождающие программный код. Например, множество README.md из GitHub-репозиториев пользовательских модулей, в которых тоже содержится документация.

Получившийся в итоге результат базы знаний можно посмотреть здесь: The Raku Knowledge Base. Исходники: https://github.com/zag/raku-knowledge-base

Предметный указатель ( Index of Terms) получился вот таким:

Предметный указатель проекта The Raku Knowledge Base

Вместо номеров страниц используется символ #, а если для указанного Term есть несколько ссылок, то порядковые номера ссылок. При наведении курсора на ссылку отображается название документа, чтобы понять контекст, где этот термин используется.

Если Term указан в нескольких источниках, используются их порядковые номера в качестве ссылок.

Также поддерживается "See Also" - это когда для термина существует синоним, т.е. эта же сущность имеет другое название.

Пример "See Also" на странице предметного указателя

Реализована группировка терминов:

Пример группировки Terms на странице предметного указателя

Поиск вызывается сочетанием клавиш (ctrl-K ) на любой странице:

Экран поиска по опубликованной базе знаний

По поводу поиска, могу только сказать, что это очень начальная версия, где используется только простой поиск текста в документах, без какой либо градации по типу найденного результата. Тут еще предстоит достаточно поработать, хотя документы вполне себе ищутся )

В результате в проекте публикации базы знаний из набора файлов podlite-web добавились плагины для дополнительной обработки документов и возможность подключения внешних библиотек.

Также оставлю ссылку на пост из блога Podlite с подробностями: podlite.org/a5ZK1

Спасибо