Je teste ici la fonctionnalité "expérimentale" d'exécuter du code lors de la génération de la web, avec une directive .. runblock::.
La première directive est ..runblock:: pycon. Elle fait appel à Python, mais utilise la syntaxe d'une session interactive de l'intérpreteur.
Par exemple, le code suivant :
.. runblock:: pycon >>> for i in range(5): ... print i
produira la sortie suivante :
On peut aussi vérifier la version de Python utilisée par l'extension :
Mais, cette extension runcode permet aussi de faire plus !
Par exemple, la date courante :
Ou bien une liste des fichiers .rst dans le répertoire courant :
Ou bien encore, on peut réaliser une signature GPG (à la volée) du fichier courant (pour plus d'infos sur GPG voir pgp.html) :
figlet pour afficher du texte en ASCII art :
Mon script bin/series.sh permet de lire automatiquement l'épisode suivant d'une série télé, et utilise un fichier ~/current pour savoir quel dossier lire :
Le script bin/CheckDownload_Pypi.sh permet de consulter les statistiques de téléchargement d'un paquet Python hébergé sur Pypi. En l'occurence, https://pypi.python.org/pypi/ANSIColors-balises !
État du dépôt git (montre quels fichiers sont nouveaux (N), modifiés (M) ou supprimés (D)) :
Un truc débile avec un élan (cf. Bohort : "Non, moi ça m'évoque plutôt un élan" via publis/.quotes.txt) :
Afficher une image en ASCII :
Et la même en plus gros :
Dans le fichier conf.py, on peut facilement créer des raccourcis pour faciliter l'unilisation de cette extension runblock.
Il faut d'abord créér un dictionnaire vide appelé autorun_languages.
autorun_languages = {}
Et ensuite ajouter une valeur truc (un programme valide, comme gnuplot ou ocaml) et truc_prefix_chars (taille des préfixes) pour rendre utilisable la balise .. code-block:: truc dans les documents en rST :
# Ajouter ça dans votre conf.py autorun_languages['ocaml'] = u'ocaml -stdin' autorun_languages['ocaml_prefix_chars'] = 2
Avec cette astuce, il n'affiche plus ces messages inutiles : victoire !
J'ai des fois vu pygments ou pygmentize se casser complètement, et la correction que je fais :red:`manuellement` est de supprimer le support (annoncé comme expérimental) de pkg_resources dans le fichier plugin.py, en forçant :red:`manuellement` pkg_resources = None (à la ligne 41). :red:`C'est sale` mais ça corrige le bug...