Я начал работать над проектом Shiva с первого коммита в марте 2024 года, стремясь создать универсальный инструмент на Rust для парсинга и конвертации документов. За несколько месяцев проект значительно расширился, добавив поддержку множества форматов файлов, включая HTML, Markdown, простой текст, PDF, JSON, CSV, RTF, DOCX, XML, XLS, XLSX, ODS и Typst. Shiva — это проект с открытым исходным кодом, и его репозиторий доступен на github.com/igumnoff/shiva.
Цель проекта — предложить альтернативу таким известным инструментам, как Apache Tika, написанный на Java, и Pandoc, разработанный на Haskell. Эти инструменты уже давно стали стандартом для разработчиков, работающих с документами. Однако я надеюсь, что Shiva сможет предложить более простое и эффективное решение, которое сможет справляться с растущим разнообразием и сложностью цифровых документов. Проект развивается быстро, хотя впереди еще много работы, но мне радостно наблюдать за прогрессом.
Я хочу выразить огромную благодарность всем, кто помогал добавлять поддержку новых форматов. Ваш вклад был неоценим.
Буду рад, если кто-то заглянет в репозиторий, оставит отзыв или внесет свой вклад. Сообщество открыто для идей и совместной работы, чтобы продолжать развивать возможности Shiva.
belonesox
Посмотрел, пока непонятно, это только «изоморфная конвертация» или все таки будет «техписательство»
Наверное проект еще молодой, заброшу ожидания того, кто использует pandoc-пайплайны для технического документирования (может когда-нибудь получится, или сразу напишете, что это против вижена проекта):
синхронизация исходников с результатом (что-то типа «source-pos» в pandoc)
включение одних документов в другие (типа разных include-фильтров pandoc, но если это будет из коробки — лучше).
подстановки шаблонов/cущностей...
…
и я так понял, плагинов не планируется?
igumnov Автор
Звучит круто и амбициозно. Пожалуйста, опиши, как Вы это видите, и я добавлю в планы.
belonesox
Ну, long story short → я вижу эффективное техдокументирование близким к LaTeX-процессу, где есть код и предпросмотр, между ними легко перепрыгивать, код может «включать» другой код и шаблоны. Разве что заменить LaTeX-разметку (которая не для людей) на Markdown, а PDF-предпросмотр (кому теперь нужны страницы) на HTML-предпросмотр. Вот как это выглядит за 30 секунд.
Я это сделал на Pandoc, но контрибуция в Haskell-сорсы для меня мучительна, а экстеншны не всегда удобно там подключаются... Но в целом, реализуемо (там масса тонкостей, как обрабатывать формулы, как...).
Не хочу вас сейчас в это толкать (вдруг я склоняю вас к NIH-переизобретению-велосипедов), но может когда-нибудь... Ну разве что сейчас на уровне архитектуры наверно надо подумать о подключении экстеншнов, и опциональной информации «в исходном файле этот обьект был на такой строчке такого файла» и может, тут как-то форсить на мировом уровне для маркдауна спецификацию стандартного способа как «включать другие файлы».