Une date dans un commentaire n'est pas une date

Décision simple : aucun article de ce site ne porte de date. Un article daté vieillit ; le même texte sans date reste valable. La règle a été appliquée à la main sur quatre articles — puis on s'est rappelé qu'une règle appliquée à la main ne protège que le jour où on l'applique.

1. Le contrôle qu'il ne fallait pas écrire

La première version tenait en une ligne : chercher des motifs de date dans le fichier. Elle aurait fonctionné. Elle aurait aussi signalé soixante-seize pages parfaitement conformes.

Parce que soixante-seize de nos pages contiennent une date — dans un commentaire HTML, qui rappelle quand une décision a été prise et par qui. C'est de la mémoire de code, invisible pour un visiteur, et précieuse : c'est elle qui empêche quelqu'un de supprimer dans six mois une bizarrerie dont il ne comprend plus la raison.

Et la page qui liste les articles porte, sur chaque carte, un attribut de date qui sert au tri. Invisible également, et fonctionnel : le supprimer casserait l'ordre d'affichage.

Un contrôle qui signale soixante-seize faux problèmes pour zéro vrai ne sera pas lu deux fois. Il sera contourné le jour même — et ce jour-là, c'est nous qui aurons construit l'outil qu'on désactive.

2. La distinction qui fait tout

La règle n'est pas « pas de date dans le fichier ». Elle est « pas de date sous les yeux du lecteur ». Une fois énoncée ainsi, l'implémentation devient évidente : avant d'analyser, on retire tout ce qu'un visiteur ne voit pas.

.replace(/<!--[\s\S]*?-->/g, ' ')      // les commentaires
.replace(/<script[\s\S]*?<\/script>/gi, ' ')
.replace(/<style[\s\S]*?<\/style>/gi, ' ')
.replace(/<svg[\s\S]*?<\/svg>/gi, ' ')  // coordonnées, identifiants
.replace(/<[^>]+>/g, ' ')               // balises ET attributs

Ce qui reste, c'est le texte. On y cherche des dates, et rien d'autre. Résultat : zéro faux positif sur quatre-vingts articles, et le refus immédiat dès qu'on réintroduit volontairement une date dans un paragraphe.

3. Le mois seul ne suffit pas

Un détail nous a fait ajouter une nuance. Une de nos pages contient la phrase « rappelle-moi la déclaration en août ». C'est un exemple d'usage, pas une date de publication. Un contrôle qui repère les noms de mois l'aurait bloquée.

On exige donc un jour ou une année à côté du mois. « Le treize août » est une date — écrite ici en toutes lettres, sans quoi ce garde-fou refuserait l’article que vous lisez. « en août » est une phrase. La différence paraît minuscule ; elle décide si le garde-fou est utilisable au quotidien ou pas.

4. Le périmètre est une décision, pas un oubli

Le contrôle ne regarde que les articles. Les pages légales doivent porter leur mention de dernière mise à jour — c'est une obligation. Le curriculum doit porter ses années, sinon il ne veut rien dire. Et une page qui raconte un mois de travail a une date pour sujet.

Un garde-fou qui déborde de son périmètre finit par empêcher du travail légitime, et c'est comme ça qu'il perd son autorité. Écrire ce qu'il ne regarde pas, et pourquoi, fait partie du garde-fou autant que ce qu'il refuse.

🔭