Бен Хьюз прав. Это очень трудно сделать правильно, особенно если вы хотите анализировать реальные статьи из больших вики, таких как сама Википедия, со 100% точностью. Это часто обсуждается в списке рассылки wikitech, и ни один альтернативный парсер не придумал этот товар, несмотря на многочисленные попытки.
Во-первых, на самом деле это не парсер, поскольку у него нет такого понятия, как AST (абстрактное синтаксическое дерево). Это конвертер, который специально конвертирует в HTML.
Во-вторых, не попадайтесь в ловушку мышления вики-текста как языка разметки, который в редких случаях может быть расширен с помощью HTML. Вы должны думать об этом как о расширении HTML. Гораздо проще добавить поддержку викитекста в анализатор HTML, чем добавить поддержку HTML в анализатор викитекста.
Что сводится к тому, что если вам нужен какой-либо другой формат, вам нужно будет преобразовать HTML в этот формат.
По сути, заявлено, что только MediaWiki может анализировать вики-текст. Но да, парсер тесно интегрирован с остальным кодом. Опытные хакеры MediaWiki плохо реагируют на вопросы об изоляции парсера - я пробовал (-:
Но я все равно пошел дальше и изолировал его. Он еще не закончен или не готов поделиться с кем-либо еще. Но в основном вы хотите начать с того, что источник MediaWiki не установлен или не подключен к базе данных или веб-серверу. Создайте программу-заглушку PHP, которая включает в себя парсер и вызовет точку входа. Проверьте ошибку, когда она не запускается, и создайте фальшивую заглушку для класса, функции или глобального объекта, к которому был получен доступ. Повторяйте до тех пор, пока вы не укажете большинство мест, где парсер взаимодействует с остальной частью MediaWiki.
Тогда проблема заключается в том, чтобы синхронизировать ваш взломанный вариант-заглушку, потому что дерево исходных текстов быстро меняется, и живые вики очень быстро отражают изменения в синтаксическом анализаторе, и вашему варианту придется идти в ногу, если он будет работать в будущем.
Проверьте мой запрос функции: Ошибка 25984 - Изолировать анализатор от зависимостей базы данных