2012-03-09 7 views
8

Estoy desarrollando una wiki con Python/Django, en parte para fines educativos. Hasta ahora sigo perdiendo el lenguaje de marcado correcto. Intenté bastante, incluyendo Creole y Markdown, que funcionó bien, excepto por el soporte de la tabla. Los lenguajes de marcado de wiki comunes parecen admitir solo tablas rudimentarias, es decir, una sola línea por celda o sin marcas complejas dentro de las celdas. Pero los usuarios de mi wiki quieren poder crear tablas con texto de formateo y listas más grandes dentro de las celdas. Tengo mis problemas para encontrar un lenguaje de marcado que realmente pueda hacer esto.Lenguaje de marcado Wiki con excelente soporte de tabla

He mirado el lenguaje de marcado MediaWiki que parece soportar todo, pero creo que usar esto sería excesivo. El resto del marcado puede ser bastante simple, centrándose en la facilidad de escritura del marcado (creo que el marcado de MediaWiki es algo desagradable a veces). Además, debe haber un módulo de Python para traducir el marcado en HTML que pueda usar en la aplicación web. Todavía estoy buscando uno para el marcado MediaWiki.

Otra alternativa sería volcar los lenguajes de marcado de wiki y en su lugar permitir un conjunto de etiquetas HTML definidas para el marcado. Pero eso hace que sea más difícil escribir artículos de wiki, ya que el HTML no está inventado para tal uso. y también encontrar y escapar de HTML prohibido podría ser bastante complicado. Preferiría tener un buen lenguaje de marcado con una implementación liviana de Python.

¿Alguien sabe de un lenguaje de marcado con soporte de tabla extendida y una implementación en Python que podría usar?

¡Gracias de antemano!

Respuesta

1

He encontrado una solución yo mismo porque he encontrado que la reST es complicada de usar para usuarios sin experiencia técnica. Podría ser un poco elaborado pero funciona para mí.

La clave es una extensión para un lenguaje de marcado ya existente. Encontré Markdown bastante agradable, a pesar de su falta de soporte de mesa. El uso de Python-Markdown, here es todo lo que necesita saber para escribir su propia extensión. No es tan complicado. Hackeé algo juntos en media hora y en realidad funciona hasta ahora. Mostraría el código aquí, pero todavía no estoy orgulloso de él;) Básicamente, analiza un bloque de marcado e inserta los elementos de la tabla en el DOM como desee.

Supongo que toda implementación utilizable de un lenguaje de marcado debe tener algún tipo de mecanismo de extensión, por lo que debería ser posible escribir extensiones para otros lenguajes e implementaciones, también. Esa no es la solución más conveniente, pero aún mejor que utilizar un lenguaje feo solo por el bien de las funciones.

4

No sé si satisface sus necesidades, pero podría usar reStructuredText. Sphinx genera html para la documentación de python y está escrito en python, por lo que debería ser fácil de usar para este propósito. Me parece muy ordenado y fácil de leer, como está diseñado, y puede hacer tablas bastante complicadas.

+0

+1 aunque no estoy seguro de si 'rest' es un lenguaje de marcado. – Simon

+0

Supongo que la definición exacta de un lenguaje de marcado es un poco variada, por lo que no sé si 'resto' pertenece técnicamente a esta categoría, pero es fácil de escribir, fácil de leer y se compila en html atractivo, por lo que es probable que sea un buen candidato para este tipo de uso. – aquavitae

+0

Gracias por la sugerencia. ReST realmente admite todo lo que necesito e incluso tiene integración en Django. Sin embargo, no me parece fácil de leer para los que no son expertos en tecnología y aún más difícil de escribir, si miras el marcado real para una tabla compleja. Al menos, no me gustaría que me obliguen a adaptar toda la columna si una celda ha crecido un poco. Me gustaría saber cómo los desarrolladores de Python hacen eso;) De todos modos, ¡gracias! – j0ker

Cuestiones relacionadas