Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » textoutpc, pour décoder vos messages en BBcode en Python !
Cakeisalie5 Hors ligne Ancien administrateur Points: 1979 Défis: 11 Message

textoutpc, pour décoder vos messages en BBcode en Python !

Posté le 15/04/2018 01:59

textoutpc est un module Python qui permet de décoder et traduire en HTML les messages en BBCode dans le style "textout()", i.e. propre à Planète Casio.

Le saviez vous ? a écrit :
Le nom textout() provient du nom de la fonction originale dans le code PHP de Planète Casio, en version 4.2 (v42) ou 4.3 (v43).

Un exemple d'usage est le suivant :

from __future__ import annotations

from textoutpc import render_as_html

text = """\
[img=center]https://www.planet-casio.com/assets/img/logo.png[/img]

Hello [color=R10]world[/color]!
[list]
[li]This module is made by [url=https://thomas.touhey.fr/]me[/url]!
[li]Use `render_as_html()` to translate magically to HTML!
[/]
"""

print(render_as_html(text), end="")

Pour en savoir plus, retrouvez le projet sur les plateformes suivantes :


Description de 2018
Oh là là, quelle époque !
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]



Cakeisalie5 Hors ligne Ancien administrateur Points: 1979 Défis: 11 Message

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
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blog
Lephenixnoir En ligne Administrateur Points: 25169 Défis: 174 Message

Citer : Posté le 23/05/2025 15:07 | #


de l'orienté objet au lieu du fonctionnel moche

Cakeisdeadtome5
(ok j'arrête)
Mon graphe (28 Janvier): (MPM ; serial gint ; (Rogue Life || HH2) ; PythonExtra ; ? ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Eragon Hors ligne Gardien des bots Points: 498 Défis: 0 Message

Citer : Posté le 23/05/2025 15:15 | #


Super! À dans trois ans alors!
Mb88 Hors ligne Rédacteur Points: 1257 Défis: 3 Message

Citer : Posté le 23/05/2025 19:35 | #


Cakeisalie5 a écrit :
Ivre, il sort un refactoring complet 6 ans plus tard.


Cakeisalie5 a écrit :
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 .

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2025 | Il y a 71 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd