Extension runblock

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::.

Exemples

pycon

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 !


Exemples plus intéressants

console

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) :

Autres exemples

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 :

Des ajouts

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

ocaml

Avec cette astuce, il n'affiche plus ces messages inutiles : victoire !


Bug étrange de pygments

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...

GA|Analytics