19/02/2017
Les visiteurs assidus ont peut-être remarqué que mon site mettait des habits différents à chaque saison. C'est que j'utilise un script python qui permet en une ligne de commande de modifier les couleurs de la feuille de style.
La commande ressemble à ceci
./vivaldi.py style.css iverno
où
Les feuilles de style traitées par Vivaldi sont des feuilles de styles css ordinaires. C'est la présence d'un commentaire spécial qui déclenche le traitement.
Exemple :
body {
max-width: 680px;
...
}
...
body {
background-color: white;
/* vivaldi color: #085200 #95005d #6e4004 #051630*/
color: #051630;
}
Dans l'exemple ci-dessous j'ai séparé les règles des couleurs des autres. Ce n'est pas obligatoire, mais c'est plus commode pour la mise au point.
La règle concernant le fond background-color
n'est pas précédée du commentaire magique. Elle est statique et Vivaldi ne la modifiera pas.
Par contre la règle color:
est précédée d'un commentaire spécial qui débute avec vivaldi
.
/* vivaldi color: #085200 #95005d #6e4004 #051630*/
Ce commentaire va déclencher le traitement, qui consiste à écrire la règle color:
suivie de l'argument adéquat qui est la couleur de saison.
Autre exemple :
/* vivaldi color: green red brown blue*/
color: yellow;
produirait
color: green;
pour le printemps, color: red;
pour l'été color: brown;
pour l'automne color: blue;
pour l'hiver Le script est disponible ici vivaldi
Le nerf de la guerre est l'expression régulière :
# something like /* vivaldi color: #2f4800 #48002f #482f00 #002f48*/
regex = re.compile(r'(\s*)/\* vivaldi (\S*) ([^*]*)\*)
Cette expression reconnait le motif du commentaire spécial.
La correspondance est disséquée par les lignes:
m = regex.match(line)
...
tabs, wd, data = m.groups()
...
La ligne next(ifcss)
permet de sauter la lecture de la lingne originale qui a été réécrite.