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