Coffee script, comment mettre la main sur cette ligne ?

Coffee script, comment mettre la main sur cette ligne ?

Vous appréciez notre travail......nous recrutons !

Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.

Mise à jour du 12 avril 2012 : Pull Request ajoutant un un mappage aux rapports d’erreur CoffeeScript

Il est probable que, si vous codez en CoffeeScript, vous vous retrouvez souvent face à une exception JavaScript qui vous signale qu’un problème est survenu sur une ligne spécifique. Le problème est que le numéro de ligne en question est celui du code JavaScript généré, pas votre numéro de ligne en CoffeeScript. Pire encore, si vous générez votre code JavaScript de manière transparente, vous n’aurez aucun fichier JavaScript à examiner et le processus de recherche de l’endroit où cette erreur s’est produite est encore plus frustrant.

Eh bien, il semble que la future version de JavaScript pourrait venir à la rescousse, mais pas avant quelques mois. En attendant, voici petit script Bash qui pourrait vous faire gagner du temps.

Nous appellerons notre script coffeep, une version améliorée de coffee -p et son but est d’afficher sur la console le code JavaScript traduit à partir de votre fichier CoffeeScript avec la ligne numérotée. Pour le rendre encore plus utile, le script peut prendre un ou deux arguments supplémentaires après le chemin du fichier de café pour limiter les lignes imprimées à la seule section que vous souhaitez déboguer.

Par exemple, coffeep myfile.coffee génère le code JavaScript généré, comme le ferait coffee -p myfile.coffee, mais avec chaque ligne précédée du numéro de ligne correspondant. L’appel de coffeep myfile.coffee 20 affichera la ligne 20, ainsi que les 5 lignes précédentes et les 5 lignes suivantes. Appeler coffeep myfile.coffee 20 30 affichera la ligne 20 à 30.

Ce n’est certainement pas sorcier, mais pourra faire partie de votre couteau suisse de développeur CoffeeScript. En tirant parti de cat -n, qui préfixe chaque ligne passée par stdin avec son numéro de ligne commençant à 1, notre première version de coffeep ressemble à ceci :

#!/bin/bash
coffee -p $1 | cat -n

Si vous n’êtes pas familier avec les scripts bash, $1 représente le premier argument passé à coffeep, qui dans notre cas est notre fichier café.

Nous allons maintenant ajouter deux utilisations possibles. Si un argument est fourni après le chemin, il est interprété comme le numéro de ligne JavaScript que vous souhaitez déboguer et nous générerons les 5 lignes précédente et suivante. Si deux arguments sont fournis après le chemin, ils sont interprétés comme la première ligne et la dernière ligne à afficher.

#!/bin/bash
if [ $# -eq 1 ]
then
    coffee -p $1 | cat -n
elif [ $# -eq 2 ]; then
    head_count=$(($2+5))
    tail_count=11
    coffee -p $1 | cat -n | head -$head_count | tail -$tail_count
elif [ $# -eq 3 ]; then
    head_count=$(($2+$3))
    tail_count=$3
    coffee -p $1 | cat -n | head -$head_count | tail -$tail_count
fi

Avec un peu d’arithmétique, nous utilisons les commandes head et tail pour limiter d’abord la sortie à head_count les premières lignes avec head, et enfin limiter la sortie à tail_count les dernières lignes avec tail.

Enfin, pour vous simplifier la vie, il suffit de copier / coller le code suivant dans votre terminal pour créer un fichier exécutable nommé “coffeep” dans “/usr/local/bin” (accessible à partir de votre $PATH, assurez-vous de disposer des droits néssaire pour modifier ce répertoire) :

cat > /usr/local/bin/coffeep <<DELIM
#!/bin/bash
if [ $# -eq 1 ]
then
    coffee -p $1 | cat -n
elif [ $# -eq 2 ]; then
    head_count=$(($2+5))
    tail_count=11
    coffee -p $1 | cat -n | head -$head_count | tail -$tail_count
elif [ $# -eq 3 ]; then
    head_count=$(($2+$3))
    tail_count=$3
    coffee -p $1 | cat -n | head -$head_count | tail -$tail_count
fi
DELIM
chmod +x /usr/local/bin/coffeep
Partagez cet article

Canada - Maroc - France

Nous sommes une équipe passionnée par l'Open Source, le Big Data et les technologies associées telles que le Cloud, le Data Engineering, la Data Science le DevOps…

Nous fournissons à nos clients un savoir faire reconnu sur la manière d'utiliser les technologies pour convertir leurs cas d'usage en projets exploités en production, sur la façon de réduire les coûts et d'accélérer les livraisons de nouvelles fonctionnalités.

Si vous appréciez la qualité de nos publications, nous vous invitons à nous contacter en vue de coopérer ensemble.

Support Ukrain