Indentation
Publié le samedi 23 février 2013, 10:30 - modifié le 15/03/13 - Bidouilles - Lien permanent
- Article
- |
- Commentaires (0)
- |
- Annexes (0)
Récemment, j'ai pas mal développé en JavaScript (J'expliquerai la raison ultérieurement), mais à foce de rajouter des boucles là où c'était pas prévu, de faire des tests sur des divisions par zéro auxquels on avait pas pensé, et bien on obtient un code ultra moche, plus du tout indenté ce qui soulève une question existentielle de l'humanité : Elle est où la fin de cette p***n de boucle ?
.
La seule solution ? Ré-indenter ?? Sauf que dans mon cas (et encore, je ne pense pas être une exception... catch(Exception JB) { }
? Ah ah, pas drôle ! ), je maltraite tellement mon code que je devrais ré-indenter tous les jours (C'est ça où voir l'association SOS Codes Battus appeler les services sociaux ). Alors, bien sûr la question se pose sur la façon de procéder à cette ré-indentation... La manière la plus simple est de le faire à la main, mais plus le code vit, plus il grandit et plus il est chronophage de ré-indenter. C'est pour cela que j'ai pondu un petit script tout simple qui se charge de réaliser une indentation de beau gosse que si tu la montres à tes conquêtes en discothèque, tu vas conclure à coup sûr !
#!/usr/bin/perl $i=0; while (<>) { chomp; s/^\s+//; s/\s+$//; $i-- if /\}/; for($j=0;$j<$i;$j++) { print " "; } print $_."\n"; $i++ if /\{/; }
Et puis, comme le méta, ça tape, j'ai ré-indenté ce script avec... ce script
Pour le fonctionnement, ce script, une fois sauvegardé en .pl
et avoir reçu les permissions qui vont bien (chmod u+x
), prend un script via l'entrée standard, le ré-indente et le redirige vers la sortie standard. Comme ça, les rois du pipe vont pouvoir se faire plaisir
La première chose que fait ce script est de détruire toute indentations existantes, plus il la reconstruit suivant deux règles simples :
Si je rencontre un "{", j'augmente l'indentation d'un cran
Si je rencontre un "}", je réduis l'indentation d'un cran
Comme ce script gère les accolades (il aime être pris dans les bras, le polisson ), il peut s'occuper de l'indentation de langages telles que C, C++, Perl, PHP mais par contre, si on lui donne du Basic ou du BASH et bien... Bonne chance
Les commentaires ne sont pas gérés : si le script trouve des accolades dans les commentaires, il procédera à leur indentation... Mais bon, quand tu as un code de beau gosse, t'as pas besoin de commentaires, n'est-ce pas ?