2011-09-05 18 views
18

El problema al escribir mi propio analizador de Markdown en Clojure es que Markdown no es un lenguaje bien especificado. No hay una gramática "oficial", solo una descripción informal de "He aquí cómo funciona" y una implementación de referencia realmente desagradable en Perl. http://briancarper.net/blog/415/¿Cuál es la implementación canónica del descuento?

puedo ver la especificación de Gruber here y la implementación here.

Esta es una aplicación que gana el ranking de Google prueba here

Luego está peg-markdown que parece resolver el 'no hay gramática' problema - pero no es la aplicación canónica.

Mi pregunta es: ¿cuál es la implementación canónica del descuento? (El que todos dicen define el estándar).

EDIT:

Reconozco que "no existe una norma canónica". Estoy buscando la siguiente mejor opción.

La respuesta parece ser showdown.js, pero hay problems with it.

(usando la definición de canónico que es el que todos dicen que define el estándar).

Se hace referencia en here y en github here.

Voy a tirar pagedown también (como alude @deceze) porque parece arreglar los errores en el enfrentamiento y estar un poco más cerca del original de Gruber.

+1

También vea http://six.pairlist.net/mailman/listinfo/markdown-discuss – daxim

+1

Vea también http://www.codinghorror.com/blog/2009/12/responsible-open-source-code-parenting .html (Lo que quiere decir que la respuesta probablemente sea prácticamente Ninguna.) – deceze

Respuesta

6

Creo que Gruber's es original y de tipo canónico (ver, por ejemplo, his 'Introducing Markdown'), y luego las personas lo han ampliado desde allí. Creo que algunas extensiones son más comunes que otras, por lo que probablemente valga la pena ver lo que algunos paquetes bien usados ​​tienen sobre su original.

+0

¿Qué consideraría un paquete bien utilizado? – hawkeye

+0

Los que enlazó en la otra respuesta: [github one] (http://github.github.com/github-flavored-markdown/), [showdown] (https://github.com/coreyti/showdown) , así como también [Discount] (http://www.pell.portland.or.us/~orc/Code/discount), y [Python Markdown] (http://www.freewisdom.org/projects/python- rebaja/Características). Yo diría también [Text :: Markdown] (http://search.cpan.org/~bobtfish/Text-Markdown-1.000030/lib/Text/Markdown.pm) y [PHP Markdown] (http: // michelf .com/projects/php-markdown /) también, pero ambos parecen ser implementaciones estrictas del original de Gruber. – Aesin

1

El CommonMark project intenta resolver algunos de los problemas de la especificación Markdown, en particular algunas ambigüedades. Viene con un reference implementation, pero obviamente es solo la implementación de referencia para CommonMark, no para Markdown en general. Es puede convertido en el estándar de facto en los próximos años, ya que algunos usuarios importantes están involucrados en ese proyecto, pero podría convertirse en otro dialecto entre muchos, en cuyo caso la implementación de referencia agregaría poco valor.

Cuestiones relacionadas