Bonjour Nal.
Je voudrais te présenter mon dernier projet, dans l'espoir de recevoir des moules plus expérimentées que moi des commentaires constructifs et instructifs ! Après tout, j'ai presque 24h avant qu'on soit Vendredi.
Dans le cadre de mon travail, et aussi celui de mes loisirs (développement du site d'un festival de cinéma qu'il est bien !), je me suis retrouvé souvent devant le même problème : je souhaitais proposer à des utilisateurs pas forcement calé en informatique de remplir le champ d'un formulaire avec un texte devant s'afficher sur le site. Hors, lorsqu'on remplace simplement le contenu d'une balise html avec le texte saisi, les retours chariot passent naturellement à la trappe. Pas terrible d'avoir toute la description d'un film condensée sur une seul longue ligne !
Thymeleaf ne propose pas de solution standard pour éviter cela. Certes, on peut utiliser les fonctions de traitement de chaînes de caractères et remplacer un simple <p th:text="&{monTexte}">
par un long et barbare <p th:utext="${#strings.replace(#strings.escapeXml(monTexte),T(java.lang.System).getProperty('line.separator'),'<br />')}" >
. Mais c'est moche, pas lisible, et surtout cela ne marche plus avec les versions les plus récentes de Thymeleaf (apparemment depuis la version 3.0.12).
Je me suis donc motivé pour écrire un dialect qui permettra d'écrire simplement un <p text:basic="${monTexte}">
bien plus lisible. Et tant qu'à faire, mes programmateurs préférés m'ayant demandé s'il était possible de mettre en gras et d'ajouter des liens, de leur offrir tout ça en ajoutant <p text:bbcode="&{monTexte}">
.
C'est ainsi qu'est né Meikik.
https://github.com/oxayotl/meikik-project
J'ai appris pas mal de choses en travaillant sur ce projet. Notamment, il me semblait important d'offrir la possibilité aux projets qui s'appuient sur Meikik d'ajouter le plus facilement possible leurs propres tag BBCode. En effet, si certains tags BBCode peuvent fonctionner de la même façon sur tous les sites (par exemple [b] qui met juste en gras), d'autres auront besoin d'être modifiés pour s'accorder aux spécificités de chaque projet, comme la balise de citation [quote].
Comme je ne souhaitais pas lier Meikik à l'utilisation de Spring, je ne pouvais pas utiliser le mécanisme de Bean de Spring. Après avoir pas mal tâtonné j'ai fini par m'appuyer sur la bibliothèque Reflections (et une bidouille qui marche, mais dont je ne suis pas très sûr) pour rechercher toutes les classes qui étendent ma classe BBCodeTag. Cela fonctionne bien pour rendre facile la tâche d'ajouter le support de plus de balise BBCode personalisée, mais je ne suis pas très satisfait de cette solution. D'abord parce qu'elle me demande d'ajouter une dépendance qui est 6 fois plus lourde que ma propre bibliothèque, et ensuite (surtout) parce que je ne suis pas du tout sûr de ce que cela pourrait entraîner au niveau des performances, sur un gros projet qui défini énormément de classes.
Dans le futur, j'envisage d'ajouter le support de Markdown en plus de BBCode.
P.S. : Oui, le nom du projet vient évidemment de ce à quoi vous pensez !
# avec le décodeur ?
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 3.
Euhhhh à quoi suis-je sensé penser ?
Au passage, qui est Thymeleaf ?
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: avec le décodeur ?
Posté par Refuznik . Évalué à 3.
==> Thymeleaf
[^] # Re: avec le décodeur ?
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
Merci à rycks et à toi.
Reste le premier point (c'est le vide dans ma tête et j'espère que ce n'est pas un bogue de ma Joyeuse Vigoureuse Mémoire qui vieillie.)
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
# Thymeleaf c'est du java
Posté par rycks . Évalué à 8.
Pour les moules qui ne sont pas de bornéo … dont je fais partie je vous économise une recherche rapide en vous offrant un extrait de Wikipédia à propos de Thymeleaf
Source : https://fr.wikipedia.org/wiki/Thymeleaf
eric.linuxfr@sud-ouest.org
# CSS ?
Posté par Goffi (site web personnel, Mastodon) . Évalué à 7.
Salut,
j'ai peut-être mal compris le problème mais les retours à la ligne peuvent être gardés avec la propriété CSS
white-space
(cf. https://developer.mozilla.org/fr/docs/Web/CSS/white-space), en utilisant la valeurpre-line
par exemple.Bon après ton projet semble gérer des langages de balisage, donc c'est plus poussé que ça.
[^] # Re: CSS ?
Posté par O'neam Anne . Évalué à 5.
Ah oui je me sens un peu con du coup ! En plus c'est pas récent et c'est supporté même par des navigateurs très anciens d'après caniuse.com.
Merci pour l'info !
LinuxFr, parfois c'est bien de la MERDE : https://linuxfr.org/users/c2462250/journaux/ecriture-inclusive-feministes-et-wikipedia#comment-1793140
[^] # Re: CSS ?
Posté par Goffi (site web personnel, Mastodon) . Évalué à 5.
Faut pas, l'informatique c'est très large et personne n'est omniscient.
Content d'avoir aidé.
[^] # Re: CSS ?
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 3. Dernière modification le 10 février 2022 à 18:27.
Ça t'a fait apprendre des trucs au passage, donc c'est pas con. Et puis il y a toujours la gestion de BBCode et de MarkDown qui ne sont pas intégrés dans les navigateurs. ;-)
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
# Suspens ...
Posté par Pol' uX (site web personnel) . Évalué à 2.
Mais qui que c'est, alors ?
Adhérer à l'April, ça vous tente ?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.