2008-11-27 9 views
6

Je suis intéressé par l'analyse sélective du balisage XML de Mediawiki pour générer une page HTML personnalisée qui est un sous-ensemble du code HTML produit par le moteur de rendu PHP Mediawiki. Je le veux pour BzReader, un lecteur de vidage compressé Mediawiki hors ligne écrit en C#. Donc, un analyseur C# serait idéal, mais tout bon code aiderait. Bien sûr, si personne ne l'a fait auparavant, je suppose qu'il est temps de commencer un projet en conservant un analyseur Mediawiki gratuit et séparé, basé sur l'analyseur de Mediawiki, mais moins étroitement intégré à Mediawiki lui-même. Donc, est-ce que quelqu'un connaît une base que je pourrais commencer, ce serait mieux que le piratage à partir du code PHP MediaWiki?Code de l'analyseur open-source pour le balisage Mediawiki

Répondre

7

Il y a une liste des parseurs sur http://www.mediawiki.org/wiki/Alternative_parsers, mais un analyseur C# est pas inclus là ...

+0

Pour l'intégration de .net, il pourrait cependant utiliser du fer python. –

+0

J'ai abandonné après quelques heures en essayant d'utiliser du fer python avec ces bibliothèques python. Trop compliqué ... – jjxtra

+0

Cette liste est ancienne et non mise à jour. – ALOToverflow

4

J'ai eu quelques mots à dire sur les modèles Mediawiki here. Intéressant qu'il y ait une liste de parseurs alternatifs maintenant, je devrai enquêter là-dessus.

6

Mise à jour
nu à l'esprit ScrewTurn ne colle pas à la syntaxe Mediawiki mais utilise sa propre variation qui fait varier un peu.

La syntaxe Mediawiki ne se prête pas à l'analyseur LALR (ou même à LL *) car elle comporte beaucoup d'ambiguïtés dans sa définition et autorise également le HTML. Il ya une discussion sur ce in this question, vous êtes essentiellement coincé avec l'écriture de votre propre analyseur et tokenizer plutôt que d'écrire simplement un fichier BNF pour cela et ensuite en utilisant ANTLR/Gold/Irony.

Roadkill Wiki utilise un Creole parser pour son analyse Mediawiki, mais avec un support limité.


ScrewTurn est publié sous la licence GPL, et dispose d'un analyseur C#:

La classe que vous êtes après est Core.Formatter qui a beaucoup de regex pour faire son travail:

public static class Formatter { 

} 

Ce n'est pas le plus beau code "mais ça marche".

+0

Merci! Excellente ressource –

+0

@Chris S: En d'autres termes: ce n'est pas un analyseur mediawiki ... –

Questions connexes