Overview
Comment: | [core][fr] improve formatNumber() suggestions |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | fr | core |
Files: | files | file ages | folders |
SHA3-256: |
15606b15a93be6f814b4857ade075323 |
User & Date: | olr on 2020-12-03 09:45:44 |
Other Links: | manifest | tags |
Context
2020-12-03
| ||
14:43 | [fr] ajustements check-in: cd832d45da user: olr tags: trunk, fr | |
09:45 | [core][fr] improve formatNumber() suggestions check-in: 15606b15a9 user: olr tags: trunk, fr, core | |
2020-12-02
| ||
15:27 | [fx] init: disable console.log() at start check-in: cc8dde9c46 user: olr tags: trunk, fx | |
Changes
Modified gc_lang/fr/modules-js/gce_suggestions.js from [ab1e5374d0] to [9d19e0f955].
︙ | ︙ | |||
579 580 581 582 583 584 585 | function suggLesLa (sWord) { if (gc_engine.oSpellChecker.getMorph(sWord).some(s => s.includes(":p"))) { return "les|la"; } return "la"; } | | > | | | | | | | | | | | | | | | | | > | 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 | function suggLesLa (sWord) { if (gc_engine.oSpellChecker.getMorph(sWord).some(s => s.includes(":p"))) { return "les|la"; } return "la"; } function formatNumber (sNumber, bOnlySimpleFormat=false) { let nLen = sNumber.length; if (nLen < 4 ) { return sNumber; } let sRes = ""; if (!sNumber.includes(",")) { // Nombre entier sRes = _formatNumber(sNumber, 3); if (!bOnlySimpleFormat) { // binaire if (/^[01]+$/.test(sNumber)) { sRes += "|" + _formatNumber(sNumber, 4); } // numéros de téléphone if (nLen == 10) { if (sNumber.startsWith("0")) { sRes += "|" + _formatNumber(sNumber, 2); // téléphone français if (sNumber[1] == "4" && (sNumber[2]=="7" || sNumber[2]=="8" || sNumber[2]=="9")) { sRes += "|" + sNumber.slice(0,4) + " " + sNumber.slice(4,6) + " " + sNumber.slice(6,8) + " " + sNumber.slice(8); // mobile belge } sRes += "|" + sNumber.slice(0,3) + " " + sNumber.slice(3,6) + " " + sNumber.slice(6,8) + " " + sNumber.slice(8); // téléphone suisse } sRes += "|" + sNumber.slice(0,4) + " " + sNumber.slice(4,7) + "-" + sNumber.slice(7); // téléphone canadien ou américain } else if (nLen == 9 && sNumber.startsWith("0")) { sRes += "|" + sNumber.slice(0,3) + " " + sNumber.slice(3,5) + " " + sNumber.slice(5,7) + " " + sNumber.slice(7,9); // fixe belge 1 sRes += "|" + sNumber.slice(0,2) + " " + sNumber.slice(2,5) + " " + sNumber.slice(5,7) + " " + sNumber.slice(7,9); // fixe belge 2 } } } else { // Nombre réel let [sInt, sFloat] = sNumber.split(",", 2); sRes = _formatNumber(sInt, 3) + "," + sFloat; } return sRes; |
︙ | ︙ |
Modified gc_lang/fr/modules/gce_suggestions.py from [48d9a59bcc] to [40d55e0743].
︙ | ︙ | |||
448 449 450 451 452 453 454 | if any( ":p" in sMorph for sMorph in _oSpellChecker.getMorph(sWord) ): return "les|la" return "la" _zBinary = re.compile("^[01]+$") | | > | | | | | | | | | | | | | | | 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 | if any( ":p" in sMorph for sMorph in _oSpellChecker.getMorph(sWord) ): return "les|la" return "la" _zBinary = re.compile("^[01]+$") def formatNumber (sNumber, bOnlySimpleFormat=False): "add spaces or hyphens to big numbers" nLen = len(sNumber) if nLen < 4: return sNumber sRes = "" if "," not in sNumber: # nombre entier sRes = _formatNumber(sNumber, 3) if not bOnlySimpleFormat: # binaire if _zBinary.search(sNumber): sRes += "|" + _formatNumber(sNumber, 4) # numéros de téléphone if nLen == 10: if sNumber.startswith("0"): sRes += "|" + _formatNumber(sNumber, 2) # téléphone français if sNumber[1] == "4" and (sNumber[2]=="7" or sNumber[2]=="8" or sNumber[2]=="9"): sRes += "|" + sNumber[0:4] + " " + sNumber[4:6] + " " + sNumber[6:8] + " " + sNumber[8:] # mobile belge sRes += "|" + sNumber[0:3] + " " + sNumber[3:6] + " " + sNumber[6:8] + " " + sNumber[8:] # téléphone suisse sRes += "|" + sNumber[0:4] + " " + sNumber[4:7] + "-" + sNumber[7:] # téléphone canadien ou américain elif nLen == 9 and sNumber.startswith("0"): sRes += "|" + sNumber[0:3] + " " + sNumber[3:5] + " " + sNumber[5:7] + " " + sNumber[7:9] # fixe belge 1 sRes += "|" + sNumber[0:2] + " " + sNumber[2:5] + " " + sNumber[5:7] + " " + sNumber[7:9] # fixe belge 2 else: # Nombre réel sInt, sFloat = sNumber.split(",", 1) sRes = _formatNumber(sInt, 3) + "," + sFloat return sRes def _formatNumber (sNumber, nGroup=3): |
︙ | ︙ |
Modified gc_lang/fr/rules.grx from [514c0b60ab] to [b17dac5a68].
︙ | ︙ | |||
1108 1109 1110 1111 1112 1113 1114 | TEST: Succession : a{{;}} b. ->> " ;" TEST: C’est assez {{: }}parlez ! ->> ": " TEST: {{» }}C’est ce qu’on croit savoir. ->> "» |« " __[s]/unit(unit_nbsp_avant_unités1)__ ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹]|)) ?)([kcmµn]?(?:[slgJKVΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|jours?|semaines|mois|ans?|euros?|heures?|px|MHz|°C|℃)(?![’']) @@0,0,$ | | | | > | 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 | TEST: Succession : a{{;}} b. ->> " ;" TEST: C’est assez {{: }}parlez ! ->> ": " TEST: {{» }}C’est ce qu’on croit savoir. ->> "» |« " __[s]/unit(unit_nbsp_avant_unités1)__ ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹]|)) ?)([kcmµn]?(?:[slgJKVΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|jours?|semaines|mois|ans?|euros?|heures?|px|MHz|°C|℃)(?![’']) @@0,0,$ <<- option("num") ->> =formatNumber(\2, True) + " " + \3 && Avec une unité de mesure, mettez un espace insécable. <<- __else__ ->> "\2 \3" && Avec une unité de mesure, mettez un espace insécable. __[s]/unit(unit_nbsp_avant_unités2)__ ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹])) ?)([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*) @@0,0,$ <<- morph(\3, ";S", ":[VCR]") or mbUnit(\3) or not spell(\3) >>> <<- option("num") ->> =formatNumber(\2, True) + " " + \3 && Si ‹\3› est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable. <<- __else__ ->> "\2 \3" && Si ‹\3› est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable. __[s]/unit(unit_nbsp_avant_unités3)__ ((\d+) )([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*)(?![’']) @@0,0,$ <<- (\2.__len__() > 4 and not spell(\3)) or morph(\3, ";S", ":[VCR]") or mbUnit(\3) >>> <<- option("num") ->> =formatNumber(\2, True) + " " + \3 && Si ‹\3› est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable. <<- __else__ ->> "\2 \3" && Si ‹\3› est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable. TEST: Ça a duré {{3µs}} ->> 3 µs TEST: Ça a duré {{3,5 µs}} ->> 3,5 µs TEST: il y en a {{3 m²}} ->> 3 m² TEST: il a fait {{10%}} ->> 10 % TEST: Ça coûte {{13,4¥}}. ->> 13,4 ¥ TEST: il mesure {{30,3 cm}} ->> 30,3 cm TEST: il est monté à {{18 %}} ->> 18 % TEST: une température de {{22,4 °C}} ->> 22,4 °C TEST: il en veut {{18kg}} ->> 18 kg TEST: il me le propose pour {{243 gCO2/kWh}} ->> 243 gCO2/kWh TEST: il me le propose pour {{243,4 gCO2/kWh}} ->> 243,4 gCO2/kWh TEST: {{40 MHz}} ->> 40 MHz TEST: {{100 Ah}} ->> 100 Ah TEST: {{1001 ans}} ->> 1 001 ans TEST: en l’an 2000 Urgondorletroll eut une idée TEST: 1998 s’annonce grandiose. TEST: il y en a 3,43 milliards. TEST: je veux 200 euros. __[s]/typo(typo_math)__ |
︙ | ︙ | |||
1303 1304 1305 1306 1307 1308 1309 | !!!! Grands nombres !! !! !! __[s]/num(num_grand_nombre_soudé)__ \d\d\d\d+ <<- not before("NF[ -]?(C|E|P|Q|X|Z|EN(?:[ -]ISO|)) *$") >>> | < < | | > | > | 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 | !!!! Grands nombres !! !! !! __[s]/num(num_grand_nombre_soudé)__ \d\d\d\d+ <<- not before("NF[ -]?(C|E|P|Q|X|Z|EN(?:[ -]ISO|)) *$") >>> <<- ((after("^(?:,[0-9]+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹])") and not (re.search("^[01]+$", \0) and after("^,[01]+\\b"))) or after("^[ ]*(?:[kcmµn]?(?:[slgJKΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|°C|℃)(?![\\w’'])")) ->> =formatNumber(\0, True) && Formatage des grands nombres. <<- __else__ and \0.__len__() > 4 ->> =formatNumber(\0) && Formatage des grands nombres. __[s]/num(num_nombre_quatre_chiffres)__ (?<!,)(\d\d\d\d)[ ]([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*) @@0,$ <<- morph(\2, ";S", ":[VCR]") or mbUnit(\2) -1>> =formatNumber(\1, True) && Formatage des grands nombres. TEST: {{12345}} ->> 12 345 TEST: {{123456}} ->> 123 456 TEST: {{1234567}} ->> 1 234 567 TEST: {{12345678}} ->> 12 345 678 TEST: {{023456789}} ->> 023 456 789|023 45 67 89|02 345 67 89 TEST: {{0234567890}} ->> 0 234 567 890|02 34 56 78 90|023 456 78 90|0234 567-890 TEST: {{12345678901}} ->> 12 345 678 901 TEST: {{112798931830912839}} ->> 112 798 931 830 912 839 TEST: {{2308393909}} ->> 2 308 393 909|2308 393-909 TEST: {{2024}},9 ->> 2 024 TEST: {{4000}} Å ->> 4 000 TEST: {{10010}} € ->> 10 010 TEST: {{3240}} µA ->> 3 240 TEST: 1111 0011,01 (binaire) __[s>(num_grand_nombre_avec_points)__ \d\d?\d?(?:[.]\d\d\d)+(?![0-9]) <<- option("num") ->> =\0.replace(".", " ") && Grands nombres : utilisez des espaces insécables plutôt que des points. |
︙ | ︙ | |||
13226 13227 13228 13229 13230 13231 13232 | >éclat [de|d’] [>voie|vois|voit] le son de [la|cette|quelle|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs] [>voie|vois|voit] <<- /conf/ --1>> voix && Confusion. Pour évoquer un son humain, animal ou instrumental, écrivez “voix”.|https://fr.wiktionary.org/wiki/voix à [>voie|vois|voit] [basse|haute|basses|hautes] <<- /conf/ -2>> voix && Confusion. Pour évoquer un son humain, animal ou instrumental, écrivez “voix”.|https://fr.wiktionary.org/wiki/voix | | | | | 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 13250 13251 13252 13253 13254 13255 13256 | >éclat [de|d’] [>voie|vois|voit] le son de [la|cette|quelle|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs] [>voie|vois|voit] <<- /conf/ --1>> voix && Confusion. Pour évoquer un son humain, animal ou instrumental, écrivez “voix”.|https://fr.wiktionary.org/wiki/voix à [>voie|vois|voit] [basse|haute|basses|hautes] <<- /conf/ -2>> voix && Confusion. Pour évoquer un son humain, animal ou instrumental, écrivez “voix”.|https://fr.wiktionary.org/wiki/voix [>entendre|>écouter] ?@:[WX]¿ $:D [>voie|vois|voit] [>donner|>redonner] ?@:[WX]¿ [de|d’] la >voie >faire entendre [la|cette|ma|ta|sa|notre|nos|votre|vos|leur+s] [>voie|vois|voit] <<- /conf/ --1>> voix && Confusion. Pour évoquer un son humain, animal ou instrumental, écrivez “voix”.|https://fr.wiktionary.org/wiki/voix >avoir ?@:[WX]¿ [>voie|vois|voit] au chapitre <<- /conf/ --3>> voix && Confusion. Locution “avoir voix au chapitre”.|https://fr.wiktionary.org/wiki/avoir_voix_au_chapitre ## voie sur la [bonne|mauvaise] voix en ?[si|très|trop]¿ [bonne|mauvaise] [voix|vois|voit] [du|au|le] long [de|d’] la [voix|vois|voit] <<- /conf/ --1>> voie && Confusion. La voix est un son humain, animal ou instrumental. Pour évoquer un chemin, écrivez “voie”.|https://fr.wiktionary.org/wiki/voie [>avancer|>cheminer|>marcher|>courir] ?@:[WX]¿ sur [la|cette|une|quelle] voix [>déblayer|>emprunter|>indiquer|>montrer|>parcourir] ?@:[WX]¿ [la|cette|une|quelle] voix <<- /conf/ --1>> voie && Confusion. La voix est un son humain, animal ou instrumental. Pour évoquer un chemin, écrivez “voie”.|https://fr.wiktionary.org/wiki/voie >ouvrir ?@:[WX]¿ la voix [à|au|aux|<end>|,] <<- /conf/ --2>> voie && Confusion. La voix est un son humain, animal ou instrumental. Pour évoquer un chemin, écrivez “voie”.|https://fr.wiktionary.org/wiki/voie en voix [de|d’] [achèvement|acquisition|décrépitude|développement|dissolution|disparition|extinction|guérison|obtention|rémission|résorption|rétablissement|spécialisation] par voix de >conséquence |
︙ | ︙ | |||
17420 17421 17422 17423 17424 17425 17426 17427 17428 17429 17430 17431 17432 17433 | >épreuve [de|d’] force >erreur [de|d’] [calcul|jeunesse|jugement|positionnement] >erreur d’ [appréciation|interprétation|orthographe] >escalier [de|d’] secours >escroquerie à l’ assurance >espérance [de|d’] vie >espérance [de|d’] vie en bonne santé >état [de|d’] [âme|conservation|esprit|fait|service|urgence] >état d’ extrême urgence >état [de|d’] l’ art >étoile [de|d’] mer >étoile à neutrons >étui à cigarettes >examen d’ entrée | > | 17421 17422 17423 17424 17425 17426 17427 17428 17429 17430 17431 17432 17433 17434 17435 | >épreuve [de|d’] force >erreur [de|d’] [calcul|jeunesse|jugement|positionnement] >erreur d’ [appréciation|interprétation|orthographe] >escalier [de|d’] secours >escroquerie à l’ assurance >espérance [de|d’] vie >espérance [de|d’] vie en bonne santé >essence [de|d’] térébenthine >état [de|d’] [âme|conservation|esprit|fait|service|urgence] >état d’ extrême urgence >état [de|d’] l’ art >étoile [de|d’] mer >étoile à neutrons >étui à cigarettes >examen d’ entrée |
︙ | ︙ |