По движку публикации базы знаний в 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) получился вот таким:
Вместо номеров страниц используется символ #
, а если для указанного Term есть несколько ссылок, то порядковые номера ссылок. При наведении курсора на ссылку отображается название документа, чтобы понять контекст, где этот термин используется.
Также поддерживается "See Also" - это когда для термина существует синоним, т.е. эта же сущность имеет другое название.
Реализована группировка терминов:
Поиск вызывается сочетанием клавиш (ctrl-K ) на любой странице:
По поводу поиска, могу только сказать, что это очень начальная версия, где используется только простой поиск текста в документах, без какой либо градации по типу найденного результата. Тут еще предстоит достаточно поработать, хотя документы вполне себе ищутся )
В результате в проекте публикации базы знаний из набора файлов podlite-web добавились плагины для дополнительной обработки документов и возможность подключения внешних библиотек.
Также оставлю ссылку на пост из блога Podlite с подробностями: podlite.org/a5ZK1
Спасибо