URL: https://linuxfr.org/users/julieng-2/journaux/publication-de-moustache-votre-nouvel-ami-dans-la-transformation-de-texte Title: Publication de Moustache, votre nouvel ami dans la transformation de texte Authors: JulienG Date: 2024年06月10日T10:45:12+02:00 License: CC By-SA Tags: jinja, rust, texte et moustache Score: 12 Cher journal, Dans le cadre de mes activités pro ou perso, j'ai l'occasion de (beaucoup) rédigé. Pour le formatage j'ai l'habitude d'utiliser [Jinja](https://jinja.palletsprojects.com/), particulièrement efficace et qui répond parfaitement à mes besoins. A un défaut près : c'est généralement "lourd" car nécessite un interpréteur Python (qui n'est pas la langage le plus léger... coucou Vlang ou Lua !) ainsi que quelques dépendances. Pas grand chose, mais on atteint vite plus de la centaine de Mo et c'est moyen-bof en air-gap. Ne peut-on pas imaginer un binaire unique, à la mode Golang (cible OS multiples et facilement distribuable), qui puisse répondre à 80% des besoins ? En somme qui fasse une forme de préprocessing (transformation initiale) de texte simple mais efficace ? Le plus "léger" possible ? Pour y arriver, j'ai listé 4 points fondamentaux qui me sont indispensable à l'exercice : _variabilité_, _conditionnalité_, _inclusion_ et _répétition_. ... mais sans être non plus _turing-complete_ ! Le résultat c'est Moustache, qui s'inspire [grandement de Jinja avec des expressions, des déclarations, des imbriquements](https://jinja.palletsprojects.com/en/3.1.x/templates/#synopsis). Et une notion plus large de renvoi de la sortie sur l'entrée, pour pouvoir faire de belles macros adaptées à mes fantaisies les plus diverses ! :) Le code est publié sans garantie sous licence `GNU General Public License`, est écrit en Rust à 100%, sans aucune dépendance extérieure. [Un coup de Cargo](https://www.rust-lang.org/fr/learn/get-started) et c'est parti ! Avec UPX **j'ai un binaire qui couvre plus de 80% de mes besoins (possiblement les vôtres ?) pour moins de 70 ko**. Parfait dans des chaînes de CI/CD pour produire de la belle documentation... Dans les fonctionnalités diverses, citons : l'inclusion de fichiers, la déclaration de blocs et leurs appels possiblement multiples après, la recherche de fichiers/dossiers selon un gabarit, des options diverses dans les déclarations, la possibilité de produire des extensions compilées (Rust) ou de l'indirection de variables (car oui, j'aime me faire du mal). Pour une présentation plus exhaustive, un README 100% français est disponible : [github.com/JGarderon/moustache/blob/main/README_fr.md](https://github.com/JGarderon/moustache/blob/main/README_fr.md) **Note :** - La version actuelle à l'heure d'écriture de ces lignes est [la 1.1](https://github.com/JGarderon/moustache/releases/tag/version-1.1). - Le dépôt Github sert de relai pour mon propre dépôt Gitlab (s'y référer pour disposer d'une version plus à jour). Bonne journée et bon code !

AltStyle によって変換されたページ (->オリジナル) /