diff --git a/firefox-updates.json b/firefox-updates.json index c56f119..df3003d 100644 --- a/firefox-updates.json +++ b/firefox-updates.json @@ -5,7 +5,7 @@ { "version": "2026.5.41", "update_link": "https://gitea.netaplaid.ch/FroSteel/Planification/releases/download/v2026.5.41/planification-v2026.5.41-firefox.xpi", - "update_hash": "sha256:3cf688b6d38969100753f8911206b2a42589f7e6948ba75cae1d15fda4332411" + "update_hash": "sha256:fbf7d8a57ad060306cb43f3db3a5d5b599bb07c75c4ef0dbd0346406bdb6c65b" }, { "version": "2026.5.40", diff --git a/src/viewer.js b/src/viewer.js index 932becd..1d5321f 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -7448,32 +7448,32 @@ function splitOneContact(raw) { // v2026.5.25 : avant d'extraire les numéros, on REMPLACE les séquences qui // sont des identifiants de matériel (LETTRES_CHIFFRES) par des espaces. - // Exemples : XXXX_NNNNNNNNNNN, XNNNNNN, XNNNNNN, XNNNNNN. + // Exemples : XXXX_NNNNNNNNNNN, XNNNNNN (1-2 lettres + 5+ chiffres). // Sans ça, XXXX_NNNNNNNNNNN laisse des "NNNN NNN NN NN" qui se font prendre // pour un numéro de téléphone par le regex qui greedy sur [0-9\s.\-]. // On remplace par des espaces de même longueur pour préserver les offsets // (important pour le calcul de position du nom avant le 1er numéro). raw = String(raw); raw = raw.replace(/\b[A-Z]{1,6}_\d+/g, (m) => " ".repeat(m.length)); - // Idem pour les identifiants sans underscore style XNNNNNN, XNNNNNN, XNNNNNN - // (1-2 lettres majuscules suivies de 5+ chiffres collés). On garde assez - // permissif pour matcher les variantes sans enlever des vrais mots. + // Idem pour les identifiants sans underscore style XNNNNNN (1-2 lettres + // majuscules suivies de 5+ chiffres collés). On garde assez permissif + // pour matcher les variantes sans enlever des vrais mots. raw = raw.replace(/\b[A-Z]{1,3}\d{5,}\b/g, (m) => " ".repeat(m.length)); // v4.1.20 : regex plus permissives pour tolérer les erreurs humaines : - // - pas d'espace après le numéro (ex: "021555555Textecoller") + // - pas d'espace après le numéro (ex: "0XXXXXXXXTextecoller") // - pas d'espace/parenthèse avant un court numéro // LONG : +41 / +33 / 0X suivis de chiffres/espaces/points/tirets // On ne limite plus par séparateur après — on laisse le moteur // consommer le numéro le plus long possible (greedy) puis on // s'arrête dès qu'on tombe sur un caractère non numérique. // v4.2 : on accepte aussi le format "41XXXXXXXXX" sans + devant (fréquent - // quand EasyVista concatène "prefixe+tel" sans espace : Nom, - // Prénom 41XXXXXXXXX → extraire 41XXXXXXXXX puis reformater en + // quand EasyVista concatène "prefixe+tel" sans espace : "Nom, + // Prénom 41XXXXXXXXX" → extraire 41XXXXXXXXX puis reformater en // +41 XX XXX XX XX). On exige exactement 11 chiffres collés pour // éviter de matcher des codes postaux ou autres nombres. // v2026.5.16 : ne PAS matcher si le numéro est précédé d'une lettre ou - // d'un underscore (identifiants style XXXX_NNNNNNNN, ABC123456, + // d'un underscore (identifiants style XXXX_NNNNNNNN, XXX0123456, // SERIAL_0123456789). On ajoute un lookbehind négatif (?