jeudi 5 septembre 2013

Tableaux like a boss

J'utilise beaucoup reStructuredText (rst) au boulot pour initialiser de la documentation. Ce qui est intéressant avec ce système, c'est qu'il est possible de tracer des table en ASCII qui vont être interprétées et transformées dans le langage cible (html pour moi).

La façon la moins tordue de décrire ces tables est la suivante :

=======  =======  =======
Header1  Header2  Header3
=======  =======  =======
cell11   cell12   cell13
cell21   cell22   cell23
=======  =======  =======

Vous remarquerez que c'est déjà super chiant de tout aligner et vous devez me penser que je suis un doux dingue pour tenter de vous dire que rst est génial si vous voulez décrire un tableau de 30 colonnes. Un peu c'est vrai...

Rassurez-vous, je ne trace pas ces tableaux à la main ! J'essaie d'être un peu plus malin.

Il existe une commande column sous Linux / Cygwin qui permet d'afficher des données sous forme de table. Génial ! Essayons d'en tirer parti dans Vim.

Commencez à décrire votre tableau en séparant les champs par des pipes :

Header1|Header2|Header3
cell11|cell12|cell13
cell21|cell22|cell23

Sélectionnez les lignes avec Vim (Shift + V) puis tapez la commande suivante :

:'<,'>!column -t -s '|'

Elle prend la sélection, et la passe à travers la commande column. L'option -t lui dit de conserver les lignes et l'option -s permet de définir le séparateur.

Vous vous retrouvez avec ça :

Header1  Header2  Header3
cell11   cell12   cell13
cell21   cell22   cell23

Il vous suffit alors de mettre les délimiteurs de table pour que votre tableau soit reconnu par rst.

=======  =======  =======
Header1  Header2  Header3
=======  =======  =======
cell11   cell12   cell13
cell21   cell22   cell23
=======  =======  =======

Et voilà !