Suivi — Syntaxe markdown Échappement du markdown

#2049 Posté par  (site web personnel) . État de l’entrée : ouverte. Licence CC By‑SA.
Étiquettes :
2
20
jan.
2023

Markdown dans une dépêche :

\\0

Devient lors d'une réorganisation

\0

Et ensuite

5d2dedb7d78d6d1f0629ea781cb92b6822c8648e

Donc l'échappement n'est pas préservé, et une donnée pseudoaléatoire et/ou extraite de la mémoire est affichée.

Ne semble pas concerner les autres contenus et commentaires, donc probablement lié au découpage par paragraphes des dépêches.

  • # hash

    Posté par  . Évalué à 4 (+0/-0). Dernière modification le 01 février 2023 à 12:42.

    La donnée "pseudoaléatoire" est un hash qui vient a priori de la conversion Markdown->HTML de linuxfr.

    Dans le repository "html-pipeline-linuxfr", fichier lib/html/pipeline/svgtex.rb, le "code" est remplacé par un hash SHA1, qui est en principe remplacé par le code après traitement de mathjax. J'imagine qu'on est ici dans un cas particulier quelconque qui fait que le remplacement ne se fait pas.

    À vue de nez et sans connaître le Ruby plus que ça, je dirais que un \0 dans la chaîne de remplacement dans le code ci-dessous (les gsub!) est remplacé par ce qui est capturé par la regex. C'est un comportement classique dans les autres langages et ça expliquerait le "bug" vu que ce qui est capturé, ben c'est le hash.

             def reinsert_code!
              @inline.each do |id, code|
                @text.gsub!(id) { "`#{code}`" }
              end
              @codemap.each do |id, spec|
                @text.gsub!(id) { "```#{spec[:lang]}\n#{spec[:code]}\n```" }
              end
            end

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.