miércoles, julio 26, 2017

Renderizar Markdown en Python

Markdown es un lenguaje de marcas creado por John Grubber, que buscaba un formato de texto estructurado que fuera fácil de escribir y de leer. Un fichero escrito en este formato se procesa con la utilidad del mismo nombre para generar contenido en XHTML / HTML válido. Con el paso del tiempo, el uso de este formato se ha hecho muy popular y plataformas como Git Hub han desarrollado su propia versión adaptada a sus sistema de comentarios y documentación.

Un ejemplo de fichero de este tipo:

# Encabezado 1
## Encabezado 2

 * Elemento 1
 * Elemento 2 
 * Elemento 3 

Esto es un [Enlace a Google](www.google.com)

El módulo de Python Python-Markdown implementa la especificación de John Grubber - con algunos detalles diferentes - y proporciona un API para añadir extensiones. De esta manera, es sencillo adaptarse a diferentes versiones de Markdown.

Si se trabaja con un entorno virtual, se puede instalar con:

$ virtualenv markdown
$ cd markdown
$ source bin/activate
$ pip install markdown

Un script sencillo que hará la conversión a html de un fichero UTF-8 que usa markdown que se pase como parámetros

import markdown
import sys

md = markdown.Markdown()
for filename in sys.argv[1:]:
    with open(filename, mode="r") as f:
        content = f.read()
        html = md.convert(content.decode('utf-8'))
        print html.encode('utf-8')

Si se aplica al ejemplo anterior, el código HTML resultante es:

<h1>Encabezado 1</h1>
<h2>Encabezado 2</h2>
<ul>
<li>Elemento 1</li>
<li>Elemento 2</li>
<li>Elemento 3</li>
</ul>
<p>Esto es un <a href="www.google.com">Enlace a Google</a></p>

Comentar que el módulo de Python ya tiene una utilidad para hacer lo mismo, se llama de la siguiente manera:

python -m markdown fichero.md

No hay comentarios: