Aller au contenu | Aller au menu | Aller à la recherche

Indentation

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 ! :mdr: ), 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 :-P ). 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 8-)
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 :mdr:

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 ? :siffle:

QR code
Jean-Baptiste Langlois

Auteur: Jean-Baptiste Langlois

Restez au courant de l'actualité et abonnez-vous au Flux RSS de cette catégorie

Commentaires (0)

Soyez le premier à réagir sur cet article

Ajouter un commentaire Fil des commentaires de ce billet

:-) ;-) :-/ :mdr: :-D :-( :-C 8-) :-O :-s :siffle: :-P :love: :oops: :money: :caca:

no attachment



À voir également

Icinga avec LDAPS

Connexion en LDAPS avec Icinga

Authentification sur Icinga via un serveur LDAP nécessitant un certificat

Lire la suite

icinga-api-2.PNG

Remonter les checks Icinga grâce à Ruby

Classe Ruby permettant de remonter des informations grâce à l'interface REST de Icinga-Web

Lire la suite