Oui, je pense que c’est probablement la meilleure option. J’avais commencé à travailler dessus en juin 2020, mais cela s’est avéré être beaucoup de travail et j’ai dû passer à d’autres projets. J’avais envisagé deux approches pour autoriser les URL upload:// dans les balises <img… aucune n’est parfaite. Voici mes notes :
Implémentation 1 :
Dans le pipeline Markdown, analyser le contenu de chaque html_block (en abusant légèrement de la bibliothèque xss.js) et traiter les balises d’image ayant des attributs src upload://.
Avantages : tout se passe dans le pipeline Markdown, ce traitement n’est effectué que sur les jetons html_block
Inconvénients : utilisation quelque peu abusive du sanitizeur xss.js. Ce n’est peut-être pas un analyseur HTML5 parfait
Cette option pourrait être améliorée en utilisant une implémentation DOM JavaScript conforme aux normes (par exemple jsdom) côté serveur, mais cela semble assez lourd.
Implémentation 2 :
Autoriser les attributs src upload:// tout au long du pipeline Markdown, puis les remplacer ultérieurement. Côté client, c’est en fait assez simple : nous remplaçons déjà les URL upload:// de manière asynchrone après la cuisson. Côté serveur, cela ajoute une étape de traitement supplémentaire utilisant Nokogiri.
Avantages : l’analyseur est conforme aux normes HTML5
Inconvénients : implémentation différente côté client/serveur, rend le pipeline légèrement plus complexe
Je pense que l’option 2 est probablement la voie à suivre. Nous devrons ensuite mettre à jour le travail pull_hotlinked_images pour conserver les balises <img, sans les remplacer par du Markdown. J’espère pouvoir trouver le temps d’y revenir bientôt ![]()