Closed AntoineAugusti closed 1 year ago
@AntoineAugusti j'ai jeté un premier oeil, pour trouver un cas concret où ça se produit.
Un cas semble être:
Voici des copies d'écran, est-ce bien à ce type d'occurrences que tu fais référence @AntoineAugusti ?
@thbar Tout à fait
Pour retrouver les données, je suis allé sur la discussion, j'ai repéré l'identifiant via le lien "copier le lien vers la discussion" pour pouvoir comparer:
Je peux visualiser la donnée sur la partie qui pose problème et la comparer avec celle qui ne pose pas problème ici:
❯ curl https://www.data.gouv.fr/api/1/discussions/62de656e40f432a649ad0ba2/ | jq "."
{
"class": "Discussion",
"closed": null,
"closed_by": null,
"created": "2022-07-25T11:42:06.661000+00:00",
"discussion": [
{
"content": "Bonjour,\r\n\r\nLes données seront périmées à la fin du mois d'Août.\r\n\r\nPouvez-vous procéder à une mise à jour ?\r\n\r\nJe vous remercie.\r\n\r\nCordialement.\r\n\r\nMax BINET\r\nKisio Digital",
"posted_by": {
"avatar": "https://static.data.gouv.fr/avatars/48/ad83ed99ab42ed8caf9e8ac8fb4a8b-original.png",
"avatar_thumbnail": "https://static.data.gouv.fr/avatars/48/ad83ed99ab42ed8caf9e8ac8fb4a8b-500.png",
"class": "User",
"first_name": "Kisio",
"id": "5ae1c88988ee385843e81b7e",
"last_name": "Digital",
"page": "https://www.data.gouv.fr/fr/users/kisio-digital/",
"slug": "kisio-digital",
"uri": "https://www.data.gouv.fr/api/1/users/kisio-digital/"
},
"posted_on": "2022-07-25T11:42:06.661000+00:00"
},
{
"content": "Bonjour\nmerci de votre vigilance. En effet les horaires seront mis à jour et ajusté fin août/début septembre en fonction des besoins liés à la rentrée scolaire. \nCordialement\nC. RENOUX\nDocumentaliste de la donnée\n\n",
"posted_by": {
"avatar": null,
"avatar_thumbnail": null,
"class": "User",
"first_name": "Christine",
"id": "5e1c7b216f44411f7ff291f6",
"last_name": "Renoux",
"page": "https://www.data.gouv.fr/fr/users/christine-renoux/",
"slug": "christine-renoux",
"uri": "https://www.data.gouv.fr/api/1/users/christine-renoux/"
},
"posted_on": "2022-07-25T17:02:09.633000+00:00"
},
{
"content": "Bonjour Christine,\r\n\r\nAvez-vous des nouvelles concernant la mise à jour des jeux de données couvrant les périmètres 1 à 4 ? En vous remerciant d'avance pour votre réponse.\r\n\r\nCordialement,\r\n\r\nJulie Higonnet | Représentante du projet Bing Maps Transit pour Microsoft",
"posted_by": {
"avatar": null,
"avatar_thumbnail": null,
"class": "User",
"first_name": "Julie",
"id": "619d00784421a8f52e53df53",
"last_name": "Higonnet",
"page": "https://www.data.gouv.fr/fr/users/julie-higonnet-1/",
"slug": "julie-higonnet-1",
"uri": "https://www.data.gouv.fr/api/1/users/julie-higonnet-1/"
},
"posted_on": "2022-09-27T07:58:17.271000+00:00"
}
],
"extras": {},
"id": "62de656e40f432a649ad0ba2",
"subject": {
"class": "Dataset",
"id": "5f727b96e0db0e5a8d8021e6"
},
"title": "Rupture prochaine de données",
"url": "https://www.data.gouv.fr/api/1/discussions/62de656e40f432a649ad0ba2/",
"user": {
"avatar": "https://static.data.gouv.fr/avatars/48/ad83ed99ab42ed8caf9e8ac8fb4a8b-original.png",
"avatar_thumbnail": "https://static.data.gouv.fr/avatars/48/ad83ed99ab42ed8caf9e8ac8fb4a8b-500.png",
"class": "User",
"first_name": "Kisio",
"id": "5ae1c88988ee385843e81b7e",
"last_name": "Digital",
"page": "https://www.data.gouv.fr/fr/users/kisio-digital/",
"slug": "kisio-digital",
"uri": "https://www.data.gouv.fr/api/1/users/kisio-digital/"
}
}
Je remarque que les cas où c'est formaté comme on le souhaite, on voit des \r\n
, tandis que là où ça n'est pas formaté comme il le faut, on voit juste des \n
.
On pourra sûrement faire quelque chose autour de ça, je vais réfléchir.
Mais attention impact un peu généralisé sur le site, sauf à passer un flag.
Je gère pas bien tous les cas, mon essai était le suivant
@filler Ecto.UUID.generate()
def markdown_to_safe_html!(md) do
{:safe, txt} =
md
# "Regexp excluding '\r\n'"
# See https://stackoverflow.com/questions/20977221/regexp-excluding-r-n
|> String.replace(~r/\r(?!\n)\w|(\w| )(?<!\r)(\n)(\w)/, "\\g{1}#{@filler}\\g{2}\\g{3}")
|> Earmark.as_html!(gfm_tables: true)
|> String.replace("#{@filler}\n", "<br>")
|> HtmlSanitizeEx.basic_html()
|> HTML.raw()
{:safe, String.replace(txt, "<table>", ~s(<table class="table">), global: true)}
end
La conversion du retour de l'API de data.gouv.fr en Markdown / HTML pourrait être améliorée, en particulier pour la gestion des retours à la ligne.
Exemple actuellement.
Le rendu devrait être
pour correspondre à ce qui est affiché sur data.gouv.fr / envoyé par e-mail