2009-06-22 13 views
5

Chciałbym spróbować trochę hackować kod MediaWiki, ale doszedłem do wniosku, że niepotrzebne byłoby uzyskanie niezależnego parsera.Gdzie mogę znaleźć dobry parser MediaWiki Markup w PHP?

Czy ktoś może mi w tym pomóc?

Dzięki.

+0

Nie dokładną kopią, ale zobaczyć to pytanie: http://stackoverflow.com/questions/324758/open-source-parser-code-for-mediawiki-markup –

Odpowiedz

3

To naprawdę niewiarygodnie trudny format do przeanalizowania. Możesz spróbować oddzielić komponent parsera od media-wiki (tak jak to jest również php), ale jest to splątany bałagan. Widziałem kilka częściowych samodzielnych, które wykonują prawie sensowną pracę dla bardzo ograniczonego podzbioru znaczników.

Jeśli zaimplementujesz jedną z nich, lub zmodyfikujesz obecną wikipedię, daj mi znać, ponieważ może być całkiem przydatna.

6

Ben Hughes ma rację. Bardzo trudno jest to naprawić, zwłaszcza jeśli chcesz przeanalizować prawdziwe artykuły z dużych wiki, takich jak Wikipedia, ze 100% dokładnością. Jest to często omawiane na liście dyskusyjnej wikitech i żaden alternatywny parser nie wymyślił towaru mimo wielu prób.

Po pierwsze, nie jest to naprawdę parser, ponieważ nie ma takiej koncepcji, jak AST (abstrakcyjne drzewo składniowe). Jest to konwerter, który konwertuje się do formatu HTML.

Po drugie, nie wpadnij w pułapkę myślenia o wikitekst jako języku znaczników, który w rzadkich przypadkach można rozszerzyć o HTML. Musisz myśleć o tym jako o rozszerzeniu HTML. Znacznie łatwiej jest dodać obsługę wikitext do parsera HTML niż dodać obsługę HTML do parsera wikitext.

To wszystko sprowadza się do tego, że jeśli chcesz inny format, musisz przekonwertować go z HTML na ten format.

Mówi się, że tylko MediaWiki potrafi parsować wikitekst. Ale tak, parser jest ściśle zintegrowany z resztą kodu. Doświadczeni hackerzy MediaWiki nie reagują dobrze na pytania dotyczące izolowania parsera - próbowałem (-::

Ale i tak udało mi się to jeszcze wyizolować.To nie jest kompletne ani gotowe do podzielenia się z nikim jeszcze. chcesz zacząć od źródła MediaWiki niezainstalowanego lub podłączonego do bazy danych lub serwera WWW.Utwórz program pośredniczący w PHP, który zawiera parser i wywołaj punkt wejścia Sprawdź błąd, gdy nie działa i wykonaj fałszywy kod do klasy , funkcja lub globalna, do której dostęp został osiągnięty Powtarzaj tę czynność, dopóki nie utkniesz w większości miejsc, w których analizator parów współdziała z resztą MediaWiki:

Problem polega na utrzymaniu zhakowanego wariantu zgasienia, ponieważ drzewo źródłowe zmienia się szybko i żywe wiki zawierają zmiany w parserze bardzo szybko, a twój wariant będzie musiał nadążyć, jeśli ma działać w przyszłości.

Sprawdź moje żądanie cecha: Bug 25984 - Isolate parser from database dependencies

+1

przynajmniej wydaje się, że jest jakaś [dokumentacja w dzisiejszych czasach ...] (https://doc.wikimedia.org/mediawiki-core/master/php/classParser.html#details) – mb21

Powiązane problemy