La moulinette est un analyseur de fichier texte qui va remplacer des appels de commandes contenus dans le texte par le résultat de ces commandes. Elle est principalement utilisée pour insérer dans des documents HTML des notes de bas de page, des figures numérotées ou des références bibliographiques.
Le document que vous êtes en train de lire a été produit par la moulinette à partir de ce fichier et est affiché dans votre navigateur à l'aide de cette feuille de style CSS.
Notez que contrairement aux technologies de type AJAX, la moulinette ne sert pas à produire des documents dynamiques. Elle sert à produire des documents statiques, mais complexes (ou en tout cas, pénibles à écrire à la main). Pour un exemple d'utilisation dynamique du parser de la moulinette avec AJAX, voir BibView.
Remarque importante : les fichiers à mouliner doivent impérativement être codés en UTF-8. Ne me demandez pas pourquoi, ce serait trop long à expliquer...
Quelques définitions :
Les symboles \#, \{ et \} sont donc des symboles réservés. Ils peuvent être protégés par un backslash (autre symbole réservé qui peut dont être lui aussi protégé...). Les symboles réservés sont également protégés s'ils sont placés entre accolades sans être précédés d'une commande :
#pedago { {#{}\\} }Seul le texte utilisé comme argument d'une commande est susceptible d'être modifié. Tout texte ne contenant aucun des symboles réservés restera tel quel.
Les erreurs de syntaxe (e.g. accolade mal placée) sont signalées par la moulinette. Un nom de commande inconnu sera ignoré, ce qui peut avoir des effets pervers sur l'analyse du texte qui suit. Dans cet exemple, les commandes italic et bold sont bien définies, mais l'utilisateur a fait une faute de frappe sur la deuxième ligne :
#pedago { #italic {hi #bold there} #itzlic {hi #bold there} }Une paire d'accolades permet de séparer le nom d'une commande des symboles suivants, sans insérer d'espace :
#pedago { #date #time #date@#time #date @#time #{date}@#time }La commande comment permet d'insérer des commentaires dans le fichier et debug d'afficher du texte sur la sortie standard de la moulinette :
#pedago { #comment {this is not interesting} #debug {moulinette rocks!} }Les commandes inline et eval permettent d'évaluer une suite d'instructions ou une expression Python. Attention : le code Python est sensible à l'indentation...
#pedago { #inline {import sys} #eval {"Python %d.%d.%d"%sys.version_info[:3]} }Deux commandes permettent d'insérer le contenu d'un fichier en le transformant (include) ou tel quel (insert) :
#pedago { #include demo.txt #insert demo.txt }La commande import permet de charger un ou plusieurs "feuilles de style". Une feuille de style contient les définitions de plusieurs commandes.
#pedago { #import timestamp #import {notes biblio figures} }Les feuilles de style de la moulinette sont écrites en Python. Pour en savoir plus, consulter les exemples fournis.
Les feuilles de style notes, biblio et figures contiennent diverses commandes permettant d'insérer des notes de bas de page, des références bibliographiques au formats BibTeX (exemple) ou refer (exemple), ou des figures. Les exemples ci-dessous donnent un aperçu de ce que ces commandes peuvent faire. Pour plus de précisions, consulter les fichiers Python correspondants.
#pedago { Exemples de notes simple#insnote{Ceci n'est pas un lien} et #urlnote http://www.lri.fr/ {hypertexte}, de références BibTeX#cite{Metisse-UIST05} et refer#cite{C.CHI.04.1.519}. Exemple de renvoi vers une figure (#{refNextFig}). #figure { http://www.lri.fr/images/banniere3_new.jpg w300 } {Bannière du LRI} Autre exemple de renvoi vers une figure (#{refPrevFig}). }Remarque : la fin de ce document inclus les commandes {#notes Notes} et {#biblio {demo.bib demo.ref}} qui insèrent effectivement les notes et la référence bibliographique de l'exemple ci-dessus.
D'autres exemples plus complexe d'inclusion de références bibliographiques sont disponibles ici.
#comment ------------------------------------------------------------- #conditional {