问题:
我想呈现MediaWiki语法(我的意思是由WikiPedia使用的MediaWiki语法,而不是来自其他引擎(如WikiPlex)的其他维基格式),并且要用C#实现。
输入:MediaWiki标记字符串 输出:HTML字符串
有一些替代的mediawiki解析器,但没有C#版本。此外,由于这些库的结构,pinvoke C / C ++看起来很困难。
作为语法指南,我使用http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet 我的第一个目标是正确呈现该页面的标记。
可以在此处查看Markup: http://en.wikipedia.org/w/index.php?title=Wikipedia:Cheatsheet&action=edit 现在,如果我使用Regex,它就没什么用了,因为不能确切地说哪个标记结束哪个开始,特别是当一些元素(例如斜体)成为父元素的属性时。
另一方面,逐个字符解析也不是一个好的方法,因为例如'''表示粗体,''表示斜体,而'''''表示粗体和斜体...。
我研究了一些其他解析器代码的移植,但Java实现是晦涩的,Python实现的正则表达式语法非常不同。
到目前为止,我看到的最好的方法是将mwlib移植到IronPython上http://www.mediawiki.org/wiki/Alternative_parsers。
但坦白地说,我并不希望将IronPython运行时添加为我的应用程序依赖项,即使我想要这样做,文档也很糟糕。
我想呈现MediaWiki语法(我的意思是由WikiPedia使用的MediaWiki语法,而不是来自其他引擎(如WikiPlex)的其他维基格式),并且要用C#实现。
输入:MediaWiki标记字符串 输出:HTML字符串
有一些替代的mediawiki解析器,但没有C#版本。此外,由于这些库的结构,pinvoke C / C ++看起来很困难。
作为语法指南,我使用http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet 我的第一个目标是正确呈现该页面的标记。
可以在此处查看Markup: http://en.wikipedia.org/w/index.php?title=Wikipedia:Cheatsheet&action=edit 现在,如果我使用Regex,它就没什么用了,因为不能确切地说哪个标记结束哪个开始,特别是当一些元素(例如斜体)成为父元素的属性时。
另一方面,逐个字符解析也不是一个好的方法,因为例如'''表示粗体,''表示斜体,而'''''表示粗体和斜体...。
我研究了一些其他解析器代码的移植,但Java实现是晦涩的,Python实现的正则表达式语法非常不同。
到目前为止,我看到的最好的方法是将mwlib移植到IronPython上http://www.mediawiki.org/wiki/Alternative_parsers。
但坦白地说,我并不希望将IronPython运行时添加为我的应用程序依赖项,即使我想要这样做,文档也很糟糕。