Лучший подход для визуализации MediaWiki на C #?

Вопрос:

Я хочу отобразить синтаксис MediaWiki (и я имею в виду синтаксис MediaWiki, используемый WikiPedia, а не какой-либо другой формат вики из какого-либо другого движка, такого как WikiPlex), а также в C #.

Ввод: строка разметки MediaWiki
Вывод: HTML-строка

Есть несколько альтернативных синтаксических анализаторов mediawiki, но ничего в C #, и, кроме того, определение C / C ++ выглядит мрачно из-за структуры этих библиотек.

В качестве руководства по синтаксису я использую http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet

Моя первая цель - правильно отобразить разметку этой страницы.

Разметку можно увидеть здесь: 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 в качестве зависимости к моему приложению, и даже если бы я захотел, документация в лучшем случае плохая.

7
задан Stefan Steiger 22 November 2017 в 12:42
поделиться