Para Markdown -> HTML, hay Showdown
StackOverflow en sí mismo utiliza el lenguaje Markdown para preguntas y respuestas; ¿Intentaste ver cómo funciona?
Bueno, parece que está usando PageDown que está disponible bajo la licencia MIT
La pregunta: ¿Existe alguna buena biblioteca o control de Markdown Javascript?y sus respuestas también pueden ayudar :-)
Un editor completo, por supuesto, no es exactamente lo que pediste; pero deben usar algún tipo de función para transformar el código Markdown a HTML; y, dependiendo de la licencia de estos editores, es posible que pueda reutilizar esa función ...
En realidad, si observa de cerca Showdown, en su código fuente (archivo showdown.js) , encontrará esta parte del comentario:
No es sintaxis jQuery, pero debería ser bastante fácil de integrar en su aplicación ;-)
Acerca de Textile, parece ser un poco más difícil encontrar algo útil :-(
En el otro lado, HTML -> Markdown, supongo que las cosas podrían ser un poco más difíciles ...
Lo que haría es almacenar Markdown y HTML en el almacén de datos de mi aplicación (¿base de datos?), Y usar uno para editar y el otro para renderizar ... Tomaría más espacio, pero parece menos arriesgado que "descifrar" HTML. ..
Pensé que valdría la pena hacer aquí una lista de las soluciones de JavaScript que existen y su tamaño reducido (sin comprimir) y sus fortalezas / debilidades. El tamaño comprimido para el código minificado será alrededor del 50% del tamaño sin comprimir. Qué se reduce a:
Todos estos usan la licencia MIT, la mayoría están en npm.
enfrentamiento : 28KB. Básicamente el patrón oro; es la base del retroceso de página.
retroceso de página : 8KB. Esto es lo que impulsa StackExchange, para que pueda ver por sí mismo qué características admite (es muy robusto pero faltan tablas, listas de definiciones, notas al pie, etc.). Además del script de conversión de 8 KB, también ofrece scripts de edición y desinfección, que también utiliza StackExchange.
reducción : 1.3KB. Revelación completa, lo escribí. Alcance de funciones más amplio que cualquier otro convertidor ligero; maneja la mayoría, pero no todas, las especificaciones de CommonMark. No se recomienda para la edición del usuario, pero es muy útil para presentar información en aplicaciones web. Sin HTML en línea.
markdown-it : 104KB. Sigue la especificación CommonMark; admite extensiones de sintaxis; produce una salida segura de forma predeterminada. Rápido; en realidad puede ser tan robusto como un enfrentamiento, pero muy grande. Es la base de http://dillinger.io/ .
marcado : 19KB. Exhaustivo; probado contra el conjunto de pruebas unitarias; admite reglas personalizadas de lexer.
micromarkdown : 5 KB. Admite muchas funciones, pero le faltan algunas comunes como el uso de listas desordenadas
*
y algunas comunes que no son estrictamente parte de la especificación, como bloques de código delimitados. Muchos errores, arroja excepciones en la mayoría de los documentos más largos. Lo considero experimental.nano- rebaja: 1.9KB. El alcance de la función se limita a las cosas utilizadas por la mayoría de los documentos; más robusto que micromarkdown pero no perfecto; utiliza su propia prueba unitaria muy básica. Razonablemente robusto pero se rompe en muchos casos extremos.
mmd.js : 800 bytes. El resultado de un esfuerzo por hacer el analizador más pequeño posible que aún sea funcional. Admite un pequeño subconjunto; el documento debe adaptarse.
markdown-js : 54KB (no disponible para descargar minificado; probablemente se minificaría a ~ 20KB). Parece bastante completo e incluye pruebas, pero no estoy muy familiarizado con él.
meltdown : 41KB (no disponible para descargar minificado; probablemente se minificaría a ~ 15KB). complemento jQuery; Markdown Extra (tablas, listas de definiciones, notas al pie).
unified.js : varía, 5-100KB. Un sistema basado en complementos para convertir entre html, markdown y prosa. Dependiendo de los complementos que necesite (revisión ortográfica, resaltado de sintaxis, desinfección de entradas), el tamaño del archivo variará. Probablemente se usa más en el lado del servidor que en el lado del cliente.
fuente
fetch
(con un pequeño escaneo de "That's So Fetch" de Jake Archibald ) para leer los archivos Markdown en mis páginas HTML estáticas y convertirlas a HTML. Dulce :-)Textil
Puede encontrar una implementación de Javascript aparentemente muy fina de Textile aquí , y otra allí (quizás no tan buena, pero tiene una bonita página de ejemplo de conversión a medida que escribe).
Nota: hay un error en la primera implementación a la que hice un enlace: las barras horizontales no se representan correctamente. Para solucionarlo, puede agregar el siguiente código en el archivo.
for(i=0;i<lines.length;i++) { // Add code :Start if (lines[i].match(/\s*-{4,}\s*/)){ html+="<hr/>\n"; continue; } // Add code :End if (lines[i].indexOf("[") == 0) {continue;} //...
fuente
Estoy usando el diminuto script minimalista - mmd.js , que solo admite un subconjunto de posibilidades de Markdown, pero esto podría ser todo lo que uno necesitaría de todos modos, por lo que este script que tiene menos de 1kb es asombroso y no será excesivo.
Funciones compatibles
#
>
1
*
[]()
![]()
*
**
Funciones no admitidas
fuente
Es fácil de usar Showdown con o sin jQuery . Aquí hay un ejemplo de jQuery:
// See http://mathiasbynens.be/notes/showdown-javascript-jquery for a plain JavaScript version as well $(function() { // When using more than one `textarea` on your page, change the following line to match the one you’re after var $textarea = $('textarea'), $preview = $('<div id="preview" />').insertAfter($textarea), converter = new Showdown.converter(); $textarea.keyup(function() { $preview.html(converter.makeHtml($textarea.val())); }).trigger('keyup'); });
fuente
El Showdown Attacklab-Link está caído, así que use https://github.com/coreyti/showdown para sus necesidades de conversión :)
fuente
Esto no aborda la solicitud completa (no es un editor), pero textile-js es una biblioteca de renderizado de JavaScript: https://github.com/borgar/textile-js . Una demostración está disponible en http://borgar.github.io/textile-js/
fuente
Encontré esta pregunta intrigante, así que decidí comenzar algo (solo reemplaza
strong
yitalic
etiquetas de rebajas). Después de pasar una hora tratando de idear una solución usando expresiones regulares, me di por vencido y terminé con lo siguiente, que parece funcionar muy bien. Dicho esto, seguramente se puede optimizar aún más y no estoy seguro de cuán resistente será en el mundo real de esta forma:function mdToHtml(str) { var tempStr = str; while(tempStr.indexOf("**") !== -1) { var firstPos = tempStr.indexOf("**"); var nextPos = tempStr.indexOf("**",firstPos + 2); if(nextPos !== -1) { var innerTxt = tempStr.substring(firstPos + 2,nextPos); var strongified = '<strong>' + innerTxt + '</strong>'; tempStr = tempStr.substring(0,firstPos) + strongified + tempStr.substring(nextPos + 2,tempStr.length); //get rid of unclosed '**' } else { tempStr = tempStr.replace('**',''); } } while(tempStr.indexOf("*") !== -1) { var firstPos = tempStr.indexOf("*"); var nextPos = tempStr.indexOf("*",firstPos + 1); if(nextPos !== -1) { var innerTxt = tempStr.substring(firstPos + 1,nextPos); var italicized = '<i>' + innerTxt + '</i>'; tempStr = tempStr.substring(0,firstPos) + italicized + tempStr.substring(nextPos + 2,tempStr.length); //get rid of unclosed '*' } else { tempStr = tempStr.replace('*',''); } } return tempStr; }
Código de prueba:
var s = "This would be *italicized* text and this would be **bold** text, This would be *italicized* text and this would be **bold** text, This would be *italicized* text and this would be **bold** text"; alert(mdToHtml(s));
Salida:
This would be <i>italicized</i>text and this would be <strong>bold</strong> text, This would be <i>italicized</i>text and this would be <strong>bold</strong> text, This would be <i>italicized</i>text and this would be <strong>bold</strong> text
EDITAR: Nuevo en V 0.024 - Eliminación automática de etiquetas de rebajas no cerradas
fuente
markdown-js es un buen analizador de rebajas de JavaScript, un proyecto activo con pruebas.
fuente
¿Ha mirado la biblioteca de Eclipse WikiText que es parte de Mylyn? Se convertirá de muchas sintaxis wiki a xhtml y xdocs / DITA. Se ve muy bien.
http://help.eclipse.org/galileo/topic/org.eclipse.mylyn.wikitext.help.ui/help/Markup-Conversion.html
¿Alguien ha encontrado una solución al problema HTML-> textil? Toda nuestra documentación actual está en formato M $ Word y nos encantaría traerla a Redmine Wiki para el mantenimiento colaborativo. No hemos encontrado ninguna herramienta que haga la conversión. Hemos encontrado la extensión Open Office que produce texto con formato mediawiki, pero Redmine Wiki usa un subconjunto de textiles.
¿Alguien conoce una herramienta que convierta TO textil de mediawiki, Word, XDocs o HTML?
fuente
Para Textil:
Recientemente he parcheado un convertidor de HTML a textil: https://github.com/cmroanirgo/to-textile
Para el Textil inverso a HTML, uso y recomiendo https://github.com/borgar/textile-js , que otras respuestas ya han mencionado.
fuente