Colorer un fichier écrit en gemtext

2021-12-01T15:12:43Z

Afin de m'entraîner avec awk, et pour préparer une petite idée que j'ai en projet, j'ai pris quelques minutes pour écrire un script permettant de colorer un fichier écrit en gemtext.

C'est déjà de base très lisible, donc c'est vraiment un caprice.

Voilà à quoi ça peut ressembler :

awk -f gemcol.awk test.gmi

Aperçu de gemcol

Voici le script gemcol.awk:

#!/usr/bin/awk -f
#
# Display gemtext file with colors
BEGIN {
    bold = "\033[1m";
    red = "\033[0;31m";
    green = "\033[0;32m";
    orange = "\033[0;33m";
    blue = "\033[0;34m";
    purple = "\033[0;35m";
    cyan = "\033[0;36m";
    gray = "\033[0;37m";
    reset = "\033[0m";
    pre = 0;
}
/^```/ { pre = (pre + 1 ) % 2; next}  # toggle pre
!pre && /^#/ { print bold $0; next}
!pre && /^=>/ { print blue $0; next}
!pre && /^\*/ { print green $0; next}
!pre && /^>/ { print gray $0; next}
pre { print "\t" $0; next}
{ print reset $0 }

La section "BEGIN" me permet de définir quelques variables.

Ensuite, je vérifie si on est dans un bloc préformaté et selon le cas, modifie la variable "pre".

Puis, à chaque fois qu'on n'est pas dans un bloc de code préformaté et qu'une ligne commence par un certain pattern, je l'affiche en couleur et pase à la suivante.

Si on est dans un bloc préformaté, alors on affiche la ligne après une tabulation.

Enfin, si ça ne correspondait à aucun pattern, alors on affiche la ligne sans couleurs.

C'est un brouillon, je compte en faire un truc permettant de lire tout en choisissant une largeur définie. (en fait, "gemcol fichier.gmi" | fold -s -w 80" fonctionne déjà).

Une réaction?

Envoyez votre commentaire par mail.

Mode d'emploi de la liste de diffusion pour recevoir les réponses.