«Открытая» библиотека парсера Markdown для .NET/Mono

Я ищу библиотеку синтаксического анализа Markdown с открытым исходным кодом для .NET/Mono (т.е. пригодную для использования из кода C#) (желательно с лицензией MIT/BSD или аналогичной).

Я нашел множество таких библиотек, но проблема со всеми ними заключается в том, что все они преобразуют информацию, собранную из текста Markdown, в фиксированный выходной формат, обычно HTML.

Я ищу парсер Markdown, который выполняет (по крайней мере) одно из следующих действий:

  • запускать события для компонентов текста Markdown (как парсеры SAX для XML)
  • позвольте мне вытащить текстовые компоненты (как XmlReaderдля XML)
  • построить структуру данных (например, какой DOM будет для XML), которая представляет содержимое текста Markdown для дальнейшей программной обработки.

Я пытаюсь добиться этого не хакерским способом, то есть решения, которые позволяют преобразовать исходный код Markdown в HTML, просто чтобы что-то сделать с этим HTML и преобразовать его обратно в Markdown - что-то впоследствии, не кажутся достаточно удобными в обслуживании.

Не могли бы вы просто использовать анализатор HTML для анализа строки HTML в DOM?
@svick: Извините, я не ищу хакерского решения. Добавил это требование к вопросу. Однако я только что нашел работающее решение.
Подождите, конвертировать обратно в Markdown? Вы не упомянули об этом раньше.
@svick: каждый из трех вариантов, которые я предлагаю, описывает способ прямого получения содержимого Markdown. Если сначала преобразовать исходный код Markdown в HTML, необходимо вернуться из HTML, чтобы получить (более простое) содержимое Markdown. Конечно, может быть, это более или менее 1:1 сопоставление между HTML и Markdown (хотя, насколько я видел, большинство парсеров Markdown на самом деле не дают никаких гарантий относительно того, как выглядит сгенерированный исходный код HTML, поэтому я не могу полагаться на это), но переход от Markdown к HTML по-прежнему кажется «неправильным», если мне действительно нужен один из промежуточных шагов на этом пути.

Ответы (1)

Тем временем я нашел CommonMark.NET .

Кажется, он делает то, что я ищу, в частности, он выполняет третий вариант, который я предложил в своем вопросе, предоставляя мне доступ к проанализированному AST (абстрактному синтаксическому дереву).