¿Por qué markdown hace esto? (recorte de espacios en blanco y otras características)

Disculpas por el título vago,

Estoy en proceso de modificar parte de la funcionalidad con markdown en discourse para que se adapte mejor a las necesidades de mi comunidad que viene de un foro mybb.

Discourse es mi primera exposición a markdown, y quiero adoptar el enfoque de “no derribes una valla si no sabes por qué está ahí”. Sin embargo, tengo dificultades para averiguar por qué markdown realiza ciertas acciones y me encantaría tener algunos recursos que me ayuden a entenderlo (especialmente si hay algunas preocupaciones de seguridad que podría estar pasando por alto).

La respuesta en este tema proporcionó algunas buenas referencias generales, incluyendo algunas discusiones tempranas y un plugin (ahora obsoleto):

Y esta publicación ha sido increíblemente útil en el lado del desarrollo:

Pero, de nuevo, busco entender por qué existen ciertas características, para poder evaluar mejor si eliminarlas o modificarlas.

Las características actuales que tengo en la mira son:

  1. Eliminar saltos de línea consecutivos sin </br> u otro código.
  2. Creación automática de bloques de código en líneas con 4 o más espacios iniciales.
  3. Recortar el espacio en blanco inicial en una nueva línea.
  4. Convertir cualquier secuencia de números en una lista numerada en orden creciente consecutivo.

¡Cualquier orientación es apreciada! ¡Gracias!

4 Me gusta

Me interesa mucho este tema, pero no tengo los conocimientos para responder a la mayoría de sus preguntas.

Sin embargo,

Creo que Discourse quiere mantener las publicaciones limpias y fáciles de leer.
Al eliminar los saltos de línea adicionales y recortar los espacios al principio de las líneas, se asegura de que las publicaciones tengan un aspecto coherente.
Esto ayuda especialmente cuando los usuarios, a veces incluso sin darse cuenta (¡conozco a algunos!), añaden espacios o líneas aleatorias que podrían dificultar la lectura de su contenido.

Puede parecer extraño forzar esto, especialmente cuando en realidad quieres un hueco en tu lista, pero supongo que es para mantener las listas numeradas lo más sencillas posible, sin necesidad de renumerar cada elemento cuando añades uno nuevo a tu publicación (o en una publicación wiki).

5 Me gusta

En realidad, mantener todo muy apretado puede dificultar la lectura. Un párrafo después de una imagen puede ser un ejemplo.

Pero… estoy usando <br /> así que no hay problema.

Otro pero… estoy bastante seguro de que la operación de limpieza no tiene nada que ver con una experiencia de lectura más limpia. Viene del propio código. Algo similar a la afirmación muy cansada de que markdown es más fácil de leer a “nivel de código”. El usuario final nunca está en esa situación.

Bueno. Esto es pura meta ahora.

Pero me niego a creer que limpiar líneas y espacios adicionales realmente mejore la experiencia general para el usuario final.

2 Me gusta

No estoy seguro de si esto resolverá un problema para ti, pero Discourse tiene una configuración del sitio traditional markdown linebreaks que está deshabilitada por defecto. Cuando está habilitada, se requieren dos espacios al final para crear un salto de línea.

Aquí tienes un ejemplo con esa configuración habilitada:

Aquí tienes un ejemplo con la configuración deshabilitada (el valor predeterminado de la configuración):

Podría valer la pena echar un vistazo a esta página y probar su tutorial de markdown de 10 minutos: Markdown Reference. El tutorial para nuevos usuarios de Discourse enlaza a esa página, pero es probable que muchos usuarios que hacen el tutorial lo pasen por alto:

5 Me gusta

Definitivamente hace que el arte ASCII sea un desafío para mostrar correctamente. :wink:

Agradezco mucho la perspectiva. Mi comunidad tiene una gran subcomunidad de juegos de foro/narración donde la libertad de formato tiende a valer más que la coherencia. Si la razón principal de estas características es realmente ayudar a mantener una apariencia coherente y simplificada, probablemente sea seguro eliminarlas para mi caso de uso, o al menos darles un interruptor seleccionable por el usuario.

Este es un tutorial muy útil, y su énfasis en “crear texto hermoso” parece seguir las ideas de coherencia mencionadas anteriormente. Gracias por señalarlo.

5 Me gusta

Al leer más sobre markdown, he encontrado este sitio particularmente esclarecedor.

Creo que esta es la descripción original de markdown, citada por el equipo de commonmark, y revela que un elemento central de por qué markdown hace lo que hace se debe a su proximidad con html.

Por ejemplo, la primera frase allí es:

Markdown es una herramienta de conversión de texto a HTML para escritores web.

Y creo que algunas de estas peculiaridades de markdown pueden deberse menos a sus propiedades organizativas y más a un deseo de convertir limpiamente el texto en el código html correspondiente.

Esto explica por qué se recorta el espacio en blanco, porque html recorta su espacio en blanco.

Además, la razón para convertir cualquier secuencia de números en una lista numerada creciente se aclara un poco con:

Así que markdown ni siquiera se molesta en mirar los números, porque las listas ordenadas en html no se molestan en asignar números. (El código real en markdown-it sí comprueba el carácter en la primera posición, pero solo para iniciar la numeración a partir de ese carácter).

Creo que hay más allá de esto (como la consistencia del formato en múltiples dispositivos), pero algunos de los aspectos más peculiares parecen muy inspirados en html.

2 Me gusta