Pregunta

En mi opinión, uno de los objetivos más grandes de Markdown es evitar que el usuario escriba HTML potencialmente malformado directamente.

Bueno, eso no funciona exactamente para mí en Markdownsharp.

Este ejemplo funciona correctamente cuando tiene la línea adicional que se rompe inmediatamente después de "ABC" ...enter image description here

Pero cuando ese salto de línea no está allí, creo que aún debería ser htmlencoded, pero eso no está sucediendo aquí ...enter image description here

Detrás de escena, el marcado renderizado proviene de un iframe. Y este es el código detrás de esto ...

<% 
var md = new MarkdownSharp.Markdown();
%>
<%= md.Transform(Request.Form[0]) %>

Seguramente debo estar perdiendo algo. Ah, y estoy usando V1.13 (la última versión a partir de este escrito).


Editar (esta es una prueba para la implementación de Stackoverflow)

a B C

esto no debería ser rojo
¿Fue útil?

Solución 2

Dado que quedó claro que la implementación de StackOverflow contiene bastantes personalizaciones que podrían llevar mucho tiempo para probar y descubrir, decidí ir en otra dirección.

Creé mi propio lenguaje de marcado simplificado que es un subconjunto de Markdown. El proyecto de código abierto está en http://ultralight.codeplex.com/ y puedes ver un ejemplo de trabajo en http://www.bucketsoft.com/ultralight/

El proyecto es una solución ASP.NET MVC completa con un editor de JavaScript. Y a diferencia de MarkdownSharp, Safe HTML está garantizado. El analizador JavaScript se usa tanto del lado del cliente como del servidor para garantizar un marcado consistente (agradecimiento especial al Compilador de Jurásico JavaScript). Es hermoso tener solo tener que mantener una base de código para ese analizador.

Aunque el proyecto todavía está en beta, ya lo estoy usando en mi propio sitio y parece estar funcionando bien hasta ahora.

Otros consejos

Para aquellos que no quieren usar la solución personalizada de Steve Wortham, he enviado un problema y una solución propuesta a los chicos de MarkdownSharp: http://code.google.com/p/markdownsharp/issues/detail?id=43

Si descarga mi archivo de markdown.cs adjunto, encontrará una nueva opción que puede establecer. Evitará que MarkdownSharp vuelva a codificar el texto dentro de los bloques de código.

Simplemente no olvide que HTML codifique su entrada antes de pasarla a Markdown, no después.

Otra solución es a las etiquetas HTML de la lista blanca como lo hace el desbordamiento de la pila. Haría esto después de pasar su contenido a Markdown.

Vea esto para más información: http://www.codetunnel.com/blog/post/24/mardownsharp-and-coded-html

¿Quizás no entiendo? Si está comenzando un nuevo bloque de código en Markdown, en todas sus variedades, necesita un doble Linebreak y sangría de cuatro espacios: una sola nueva línea no servirá en ninguno de los renderizadores que tengo que entregar.

abc -- Here comes a code block:

    <div style="background-color: red"> This is code</div>

flexible:

ABC - Aquí viene un bloque de código:

<div style="background-color: red"> This is code</div>

Por lo que estás diciendo, parece que Markdownsharp funciona bien con esta regla, por lo que con solo una nueva línea (pero sangría):

 abc -- Here comes a code block:
     <div style="background-color: red"> This should be code</div>

obtenemos un desastre, no un bloque de código:

ABC - Aquí viene un bloque de código: este debería ser código

Supongo que StackOverflow está despojando el <div> Etiquetas, porque piensan que los comentarios no deberían tener divisiones y cosas similares. (?) (En general, tienen que hacer mucho otro procesamiento, ¿no, por ejemplo, para obtener la resaltar de sintaxis y así sucesivamente?)

EDITAR: Creo que la gente espera lo incorrecto de una implementación de Markdown. Por ejemplo, como digo a continuación, No existe tal cosa como 'Markdown inválido'. No es un lenguaje de programación ni nada como uno. He verificado que las tres implementaciones de Markdown que tengo disponibles desde la línea de comando indiferentemente 'convierten' archivos .js y .c aleatorios, o aquellas insertadas en markdown sensato, y también interpolados archivos zip y otras no sesentes, en HTML válidos que A los navegadores no les importa exhibir en absoluto: los rasguños de pollo, aunque lo son. Si desea excluir algo, por ejemplo, en un programa Wiki, hace algo más, por supuesto, como lo hacen la mayoría de los programas wiki de empleo de marcas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top