Howdy!
À l'heure où je rédige ce topic, le site Planète Casio est encore dans une version qui date d'il y a sept ans (qui a certes beaucoup évolué depuis) : la version 4.2 (
v42 pour les intimes). Vous savez peut-être que le site, en l'état, est compliqué à maintenir, que sa structure date de 2006 et a été faite par des débutants de l'époque (les fondateurs du site), et que la maintenance, comprenant l'ajout de fonctionnalités et la correction de bugs, est une tâche pénible et douloureuse ; c'est pourquoi la reconstruction du site est en projet depuis des années, et que les administrateurs, conjointement avec certains membres, commencent doucement à s'y mettre (voir
le topic de référence).
Cette nouvelle version du site, cela a été décidé il y a moins d'un an, sera codée en Python 3.x avec le micro-framework Flask. Parmi les autres choix technologiques déjà faits figurent celui du langage utilisé dans le forum une fois reconstruit, qui s'est porté sur le Markdown, plus spécifiquement sur une version de celui-ci qui a été développée spécialement pour Planète Casio par
Lephenixnoir : le
Lightscript. Cependant, afin de pouvoir passer les données de la version actuelle, notamment les programmes avec leurs descriptions (avec l'accord de leurs auteur⋅e⋅s) et les topics existants, à la future version, il faudra bien passer à un moment ou à un autre du langage actuel, un BBcode dont le traducteur en HTML a été codé par les fondateurs et que j'ai récemment remanié dans son intégralité, au Lightscript.
Pour cela, et parce que je souhaite aller au bout de ce que le BBcode propose, j'ai souhaité réitérer l'expérience du traducteur BBcode à d'autres langages type HTML, en adoptant une posture bien plus orientée objet et flux que celui que j'avais écrit en PHP. C'est pour cela que j'ai lancé un projet de module Python 3.x, qui est l'objet de ce topic : le module
textoutpc. Ce module prend en langage source du BBcode et permet la génération de texte HTML et Lightscript.
Gardez à l'esprit que pour le moment, ce module est
en cours de développement. Il souffre encore de bogues très gênants, et sa sécurité n'a nullement été testée (je compte poker
Xavier59 dès que j'aurai corrigé et implémenté à peu près tout ce que je veux

). Une démonstration est disponible à l'adresse suivante :
https://textout.touhey.pro/
Que permet ce module dans le langage ?
Le langage source reste du BBcode. Le BBcode n'est nullement standardisé, c'est pourquoi en parler au singulier est un peu limite : certains donnent même des arguments aux tags, comme par exemple
[tag arg1="valeur 1" coucou="Salut !"] ! J'ai donc choisi de rester au maximum compatible avec les implémentations successives du BBcode de la v42 (en implémentant quelques bogues de l'ancienne implémentation, tel que l'injection CSS en utilisant le tag
[color]) tout en ajoutant quelques fonctionnalités qu'on trouve sur des implémentations répandues de ce langage.
L'approche de mon module est donc de considérer que les tags sont utilisés de la façon suivante :
[tag]Ce tag a du contenu[/tag]
[tag][/tag] Le tag précédent n'a pas de contenu.
[tag]Ce tag est fermé de façon rapide.[/]
[tag=contenu]Ce tag a un argument ![/]
Selon s'il faut mettre un argument aux tags ou non dépend des tags et de ce dont ils ont besoin.
Les tags sont décrits dans la documentation présente dans le dépôt,
ici (en anglais). Je traduirai en français ici quand j'aurai un moment.
FÀQ
Q: Quelle est la licence du projet ?
A: Ce projet est
sous licence MIT.
Q: Peut-on contribuer au projet ?
A: Pour le moment, il s'agit là d'un projet personnel. Si vous souhaitez contribuer en apportant un bout de code pour corriger un bug, faites-le moi savoir en répondant ici, en m'envoyant un message privé, en ajoutant une issue ou pull request sur le Gitlab ou en m'envoyant un e-mail !
Q: Quelles normes régissent la présentation du code ?
A: Tabulations de quatre colonnes, 79 colonnes maximum (le retour à la ligne est le 80ème). Je sais que je ne respecte pas la PEP8 avec ces instructions, mais je tiens trop à mes tabulations pour faire machine arrière.
Si vous avez la moindre question à laquelle vous souhaitez que je réponde, n'hésitez pas à me demander en répondant à ce topic, en m'envoyant un message privé ou un courriel (e-mail) ;)[/quote]
Citer : Posté le 23/05/2025 15:06 | #
Haha globalement oui, c'est l'application d'une expérience de plusieurs années à écrire des parsers / renderers de différents langages. Maintenant, il y a un AST propre, de l'orienté objet au lieu du fonctionnel moche, une vraie séparation entre parsing et rendering, et oui, clairement, moins de bugs.
La prochaine étape c'est de réorganiser block/inline et créer les blocs de paragraphes manquants pour pouvoir convertir le tout en Lightscript. Je ferai ça dans mon prochain hyperfocus, lol
Mon blog
Citer : Posté le 23/05/2025 15:07 | #
Cakeisdeadtome5
(ok j'arrête)
Citer : Posté le 23/05/2025 15:15 | #
Super! À dans trois ans alors!
Citer : Posté le 23/05/2025 19:35 | #
Ivre, il sort un refactoring complet 6 ans plus tard.
La prochaine étape c'est de réorganiser block/inline et créer les blocs de paragraphes manquants pour pouvoir convertir le tout en Lightscript. Je ferai ça dans mon prochain hyperfocus, lol
Ah donc la prochaine fois que tu seras ivre