Pourquoi markdown fait-il cela ? (suppression des espaces blancs et autres fonctionnalités)

Mes excuses pour le titre vague,

Je suis en train de modifier certaines fonctionnalités de markdown sur Discourse pour mieux répondre aux besoins de ma communauté qui arrive d’un forum myBB.

Discourse est ma première exposition au markdown, et je veux adopter l’approche « ne démontez pas une clôture si vous ne savez pas pourquoi elle est là ». Cependant, j’ai du mal à comprendre pourquoi le markdown effectue certaines actions et j’aimerais avoir des ressources pour m’aider à comprendre (surtout s’il y a des problèmes de sécurité que je pourrais négliger).

La réponse dans ce sujet a fourni de bonnes références générales, y compris des discussions antérieures et un plugin (maintenant obsolète) :

Et ce post a été incroyablement utile du point de vue du développement :

Mais, encore une fois, je cherche à comprendre pourquoi certaines fonctionnalités existent - afin de pouvoir évaluer au mieux leur suppression ou leur ajustement.

Les fonctionnalités actuellement dans ma ligne de mire sont :

  1. Suppression des sauts de ligne consécutifs sans <br> ou autre code.
  2. Création automatique de blocs de code sur les lignes comportant 4 espaces ou plus en retrait.
  3. Suppression des espaces blancs en début de ligne.
  4. Transformation de toute séquence de nombres en une liste numérotée par ordre croissant consécutif.

Toute aide est appréciée ! Merci !

4 « J'aime »

Je suis très intéressé par ce sujet, mais je n’ai pas les connaissances nécessaires pour répondre à la plupart de vos questions.

Cependant,

Je pense que Discourse veut garder les messages clairs et faciles à lire.
En supprimant les sauts de ligne supplémentaires et en supprimant les espaces au début des lignes, il s’assure que les messages ont une apparence cohérente.
Cela aide particulièrement lorsque les utilisateurs, parfois même sans s’en rendre compte (j’en connais !), ajoutent des espaces ou des lignes aléatoires qui pourraient rendre leur contenu plus difficile à lire.

Cela peut sembler étrange de forcer cela, surtout quand on veut un espace dans sa liste, mais je suppose que c’est pour garder les listes numérotées aussi simples que possible, sans avoir à renuméroter chaque élément lorsque l’on ajoute un nouvel élément à son message (ou dans un message wiki).

5 « J'aime »

En fait, garder le tout très serré peut rendre les choses plus difficiles à lire. Un paragraphe après une image peut en être un exemple.

Mais… j’utilise <br /> donc ce n’est pas grave du tout.

Une autre chose… je suis tout à fait sûr que l’opération de nettoyage n’a rien à voir avec une expérience de lecture plus claire. Cela vient du code lui-même. Quelque chose de similaire à l’affirmation très fatiguée selon laquelle le markdown est plus facile à lire au « niveau du code ». L’utilisateur final n’est jamais dans cette situation.

Eh bien. C’est purement méta maintenant.

Mais je refuse de croire que le nettoyage des lignes et des espaces supplémentaires améliore réellement l’expérience globale de l’utilisateur final.

2 « J'aime »

Je ne suis pas sûr que cela résolve un problème pour vous, mais Discourse dispose d’un paramètre de site traditional markdown linebreaks qui est désactivé par défaut. Lorsqu’il est activé, deux espaces de fin sont nécessaires pour créer un saut de ligne.

Voici un exemple avec ce paramètre activé :

Voici un exemple avec le paramètre désactivé (la valeur par défaut du paramètre) :

Il pourrait être utile de consulter cette page et d’essayer son tutoriel markdown de 10 minutes : Markdown Reference. Le tutoriel pour nouveaux utilisateurs de Discourse renvoie à cette page, mais elle est probablement négligée par de nombreux utilisateurs qui suivent le tutoriel :

5 « J'aime »

Cela rend certainement l’art ASCII difficile à afficher correctement. :wink:

J’apprécie vraiment votre perspicacité. Ma communauté a une grande sous-communauté de jeux de forum/récits où la liberté de mise en forme a tendance à valoir plus que la cohérence. Si la raison principale de ces fonctionnalités est vraiment d’aider à maintenir une apparence cohérente et simplifiée, il est probablement sûr de les supprimer pour mon cas d’utilisation, ou du moins de leur donner un interrupteur sélectionnable par l’utilisateur.

C’est un tutoriel très utile, et son emphase sur “créer du beau texte” semble suivre les idées de cohérence mentionnées précédemment. Merci de l’avoir signalé.

5 « J'aime »

Dans mes lectures supplémentaires sur markdown, j’ai trouvé ce site particulièrement éclairant.

C’est, je pense, la description originale de markdown, telle que citée par l’équipe de commonmark, et elle révèle qu’un élément central de la façon dont markdown fait ce qu’il fait est dû à sa proximité avec html.

Par exemple, la première phrase est :

Markdown is a text-to-HTML conversion tool for web writers.

Et je pense que certaines de ces bizarreries de markdown peuvent être moins dues à leurs propriétés organisationnelles et plus à un désir de convertir proprement le texte en code html correspondant.

Cela explique pourquoi les espaces blancs sont supprimés, car html supprime ses espaces blancs.

La raison pour laquelle toute séquence de nombres est transformée en une liste numérotée croissante devient également un peu plus claire avec :

Donc, markdown ne prend même pas la peine de regarder les nombres, car les listes ordonnées en html ne prennent pas la peine d’attribuer des numéros. (Le code réel dans markdown-it vérifie le caractère dans la première position, mais seulement pour commencer la numérotation à partir de ce caractère).

Je pense qu’il y a plus que cela, (comme la cohérence de la mise en forme sur plusieurs appareils), mais certains des aspects les plus étranges semblent très inspirés par html.

2 « J'aime »