Sí, creo que esta es probablemente la mejor opción. Empecé a trabajar en esto en junio de 2020, pero terminó siendo mucho trabajo y tuve que pasar a otros proyectos. Tenía un par de enfoques para permitir URLs upload:// en las etiquetas <img… ninguno es perfecto. Según mis notas:
Implementación 1:
En la tubería de markdown, analizar el contenido de cada html_block (abusando ligeramente de la librería xss.js) y procesar cualquier etiqueta de imagen con atributos src upload://.
Pros: todo está en la tubería de markdown, solo realiza este procesamiento en los tokens html_block
Contras: es un uso un tanto incorrecto del sanitizador xss.js. Podría no ser un analizador HTML5 perfecto
Esta opción podría mejorarse utilizando una implementación de DOM en JavaScript compatible con los estándares (por ejemplo, jsdom) en el servidor, pero eso parece bastante pesado.
Implementación 2:
Permitir atributos src upload:// a lo largo de toda la tubería de markdown y luego reemplazarlos más tarde. En el cliente, esto es realmente bastante simple: ya estábamos reemplazando las URLs upload:// de forma asíncrona después de la cocción. En el servidor, esto realiza un paso de procesamiento adicional usando Nokogiri.
Pros: el analizador es compatible con los estándares HTML5
Contras: implementación diferente en cliente/servidor, hace que la tubería sea ligeramente más compleja
Creo que la opción 2 es probablemente la mejor. Luego tendremos que actualizar el trabajo pull_hotlinked_images para mantener las etiquetas <img, sin reemplazarlas con Markdown. Espero poder encontrar tiempo para volver a esto pronto ![]()