ReverseMarkdown.Net es una biblioteca para .NET que permite permite convertir ficheros HTML en Markdown desde una aplicación escrita en C#.
ReverseMarkdown se basa en un analizador sintáctico para interpretar la estructura del fichero Markdown y generar un árbol de objetos que representa su contenido.
Internamente, la biblioteca usa HtmlAgilityPack (HAP) para generar el DOM del documento HTML, y convertirlo en el equivalente en formato Markdown
Además, ReverseMarkdown dispone de un amplio abanico de opciones para personalizar el proceso de conversión.
Para poder editar ficheros markdown y convertir a HTML puedes usar la librería Markdig
Cómo usar ReverseMarkdown.Net
Podemos añadir la biblioteca a un proyecto de .NET fácilmente, a través del paquete Nuget correspondiente.
Install-Package ReverseMarkdown
Aquí tenéis algunos de cómo utilizar ReverseMarkdown.Net extraídos de la documentación de la librería
var converter = new ReverseMarkdown.Converter();
string html = "This a sample <strong>paragraph</strong> from <a href=\"http://test.com\">my site</a>";
string markdown = converter.Convert(html);
Si quisiéramos convertir un fichero existentes, simplemente tenemos que leer antes su contenido y pasárselo al conversor.
string html = File.ReadAllText("documento.html");
var converter = new ReverseMarkdown.Converter();
string markdown = convertidor.Convert(html);
El proceso de configuración puede personalizarse a nuestras necesidades mediante la opción config
var config = new ReverseMarkdown.Config
{
// Include the unknown tag completely in the result (default as well)
UnknownTags = Config.UnknownTagsOption.PassThrough,
// generate GitHub flavoured markdown, supported for BR, PRE and table tags
GithubFlavored = true,
// will ignore all comments
RemoveComments = true,
// remove markdown output for links where appropriate
SmartHrefHandling = true
};
var converter = new ReverseMarkdown.Converter(config);
Como vemos, es muy sencillo convertir un fichero HTML ReverseMarkdown.Net es Open Source, y todo el código y documentación está disponible en el repositorio del proyecto en https://github.com/mysticmind/reversemarkdown-net