Grammalecte  Check-in [15606b15a9]

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: 15606b15a93be6f814b4857ade075323ea7cd00e301f3667fe651937e37531f4
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: fr, trunk
09:45
[core][fr] improve formatNumber() suggestions check-in: 15606b15a9 user: olr tags: core, fr, trunk
2020-12-02
15:27
[fx] init: disable console.log() at start check-in: cc8dde9c46 user: olr tags: fx, trunk
Changes

Modified gc_lang/fr/modules-js/gce_suggestions.js from [ab1e5374d0] to [9d19e0f955].

   579    579   function suggLesLa (sWord) {
   580    580       if (gc_engine.oSpellChecker.getMorph(sWord).some(s  =>  s.includes(":p"))) {
   581    581           return "les|la";
   582    582       }
   583    583       return "la";
   584    584   }
   585    585   
   586         -function formatNumber (sNumber) {
          586  +function formatNumber (sNumber, bOnlySimpleFormat=false) {
   587    587       let nLen = sNumber.length;
   588    588       if (nLen < 4 ) {
   589    589           return sNumber;
   590    590       }
   591    591       let sRes = "";
   592    592       if (!sNumber.includes(",")) {
   593    593           // Nombre entier
   594    594           sRes = _formatNumber(sNumber, 3);
          595  +        if (!bOnlySimpleFormat) {
   595    596           // binaire
   596    597           if (/^[01]+$/.test(sNumber)) {
   597    598               sRes += "|" + _formatNumber(sNumber, 4);
   598    599           }
   599    600           // numéros de téléphone
   600    601           if (nLen == 10) {
   601    602               if (sNumber.startsWith("0")) {
................................................................................
   606    607                   sRes += "|" + sNumber.slice(0,3) + " " + sNumber.slice(3,6) + " " + sNumber.slice(6,8) + " " + sNumber.slice(8);     // téléphone suisse
   607    608               }
   608    609               sRes += "|" + sNumber.slice(0,4) + " " + sNumber.slice(4,7) + "-" + sNumber.slice(7);                                   // téléphone canadien ou américain
   609    610           } else if (nLen == 9 && sNumber.startsWith("0")) {
   610    611               sRes += "|" + sNumber.slice(0,3) + " " + sNumber.slice(3,5) + " " + sNumber.slice(5,7) + " " + sNumber.slice(7,9);       // fixe belge 1
   611    612               sRes += "|" + sNumber.slice(0,2) + " " + sNumber.slice(2,5) + " " + sNumber.slice(5,7) + " " + sNumber.slice(7,9);       // fixe belge 2
   612    613           }
          614  +        }
   613    615       } else {
   614    616           // Nombre réel
   615    617           let [sInt, sFloat] = sNumber.split(",", 2);
   616    618           sRes = _formatNumber(sInt, 3) + "," + sFloat;
   617    619       }
   618    620       return sRes;
   619    621   }

Modified gc_lang/fr/modules/gce_suggestions.py from [48d9a59bcc] to [40d55e0743].

   448    448       if any( ":p" in sMorph  for sMorph in _oSpellChecker.getMorph(sWord) ):
   449    449           return "les|la"
   450    450       return "la"
   451    451   
   452    452   
   453    453   _zBinary = re.compile("^[01]+$")
   454    454   
   455         -def formatNumber (sNumber):
          455  +def formatNumber (sNumber, bOnlySimpleFormat=False):
   456    456       "add spaces or hyphens to big numbers"
   457    457       nLen = len(sNumber)
   458    458       if nLen < 4:
   459    459           return sNumber
   460    460       sRes = ""
   461    461       if "," not in sNumber:
   462    462           # nombre entier
   463    463           sRes = _formatNumber(sNumber, 3)
          464  +        if not bOnlySimpleFormat:
   464    465           # binaire
   465    466           if _zBinary.search(sNumber):
   466    467               sRes += "|" + _formatNumber(sNumber, 4)
   467    468           # numéros de téléphone
   468    469           if nLen == 10:
   469    470               if sNumber.startswith("0"):
   470    471                   sRes += "|" + _formatNumber(sNumber, 2)                                                                 # téléphone français

Modified gc_lang/fr/rules.grx from [514c0b60ab] to [b17dac5a68].

  1108   1108   TEST: Succession : a{{;}} b.                                                ->> " ;"
  1109   1109   TEST: C’est assez {{: }}parlez !                                            ->> ": "
  1110   1110   TEST: {{» }}C’est ce qu’on croit savoir.                                    ->> "» |« "
  1111   1111   
  1112   1112   
  1113   1113   __[s]/unit(unit_nbsp_avant_unités1)__
  1114   1114       ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹]|)) ?)([kcmµn]?(?:[slgJKVΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|jours?|semaines|mois|ans?|euros?|heures?|px|MHz|°C|℃)(?![’'])  @@0,0,$
  1115         -        <<- option("num") ->> =formatNumber(\2) + " " + \3          && Avec une unité de mesure, mettez un espace insécable.
         1115  +        <<- option("num") ->> =formatNumber(\2, True) + " " + \3    && Avec une unité de mesure, mettez un espace insécable.
  1116   1116           <<- __else__ ->> "\2 \3"                                    && Avec une unité de mesure, mettez un espace insécable.
  1117   1117   
  1118   1118   __[s]/unit(unit_nbsp_avant_unités2)__
  1119   1119       ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹])) ?)([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*)  @@0,0,$
  1120   1120           <<- morph(\3, ";S", ":[VCR]") or mbUnit(\3) or not spell(\3) >>>
  1121         -        <<- option("num") ->> =formatNumber(\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.
         1121  +        <<- 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.
  1122   1122           <<- __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.
  1123   1123   
  1124   1124   __[s]/unit(unit_nbsp_avant_unités3)__
  1125   1125       ((\d+) )([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*)(?![’'])  @@0,0,$
  1126   1126           <<- (\2.__len__() > 4 and not spell(\3)) or morph(\3, ";S", ":[VCR]") or mbUnit(\3) >>>
  1127         -        <<- option("num") ->> =formatNumber(\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.
         1127  +        <<- 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.
  1128   1128           <<- __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.
  1129   1129   
  1130   1130   TEST: Ça a duré {{3µs}}                                 ->> 3 µs
  1131   1131   TEST: Ça a duré {{3,5 µs}}                              ->> 3,5 µs
  1132   1132   TEST: il y en a {{3 m²}}                                ->> 3 m²
  1133   1133   TEST: il a fait {{10%}}                                 ->> 10 %
  1134   1134   TEST: Ça coûte {{13,4¥}}.                               ->> 13,4 ¥
................................................................................
  1136   1136   TEST: il est monté à {{18 %}}                           ->> 18 %
  1137   1137   TEST: une température de {{22,4 °C}}                    ->> 22,4 °C
  1138   1138   TEST: il en veut {{18kg}}                               ->> 18 kg
  1139   1139   TEST: il me le propose pour {{243 gCO2/kWh}}            ->> 243 gCO2/kWh
  1140   1140   TEST: il me le propose pour {{243,4 gCO2/kWh}}          ->> 243,4 gCO2/kWh
  1141   1141   TEST: {{40 MHz}}                                        ->> 40 MHz
  1142   1142   TEST: {{100 Ah}}                                        ->> 100 Ah
         1143  +TEST: {{1001 ans}}                                      ->> 1 001 ans
  1143   1144   TEST: en l’an 2000 Urgondorletroll eut une idée
  1144   1145   TEST: 1998 s’annonce grandiose.
  1145   1146   TEST: il y en a 3,43 milliards.
  1146   1147   TEST: je veux 200 euros.
  1147   1148   
  1148   1149   
  1149   1150   __[s]/typo(typo_math)__
................................................................................
  1303   1304   !!!! Grands nombres                                                                               !!
  1304   1305   !!
  1305   1306   !!
  1306   1307   
  1307   1308   __[s]/num(num_grand_nombre_soudé)__
  1308   1309       \d\d\d\d+
  1309   1310           <<- not before("NF[  -]?(C|E|P|Q|X|Z|EN(?:[  -]ISO|)) *$") >>>
  1310         -        <<- \0.__len__() > 4 ->> =formatNumber(\0)                                                  && Formatage des grands nombres.
  1311         -        <<- __else__
  1312         -            and ((after("^(?:,[0-9]+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹])") and not (re.search("^[01]+$", \0) and after("^,[01]+\\b")))
         1311  +        <<- ((after("^(?:,[0-9]+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹])") and not (re.search("^[01]+$", \0) and after("^,[01]+\\b")))
  1313   1312               or after("^[   ]*(?:[kcmµn]?(?:[slgJKΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|°C|℃)(?![\\w’'])"))
  1314         -        ->> =formatNumber(\0)                                                                       && Formatage des grands nombres.
         1313  +        ->> =formatNumber(\0, True)                                                                 && Formatage des grands nombres.
         1314  +        <<- __else__ and \0.__len__() > 4 ->> =formatNumber(\0)                                     && Formatage des grands nombres.
  1315   1315   
  1316   1316   __[s]/num(num_nombre_quatre_chiffres)__
  1317   1317       (?<!,)(\d\d\d\d)[  ]([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*) @@0,$
  1318         -        <<- morph(\2, ";S", ":[VCR]") or mbUnit(\2) -1>> =formatNumber(\1)                          && Formatage des grands nombres.
         1318  +        <<- morph(\2, ";S", ":[VCR]") or mbUnit(\2) -1>> =formatNumber(\1, True)                    && Formatage des grands nombres.
  1319   1319   
  1320   1320   TEST: {{12345}}                                 ->> 12 345
  1321   1321   TEST: {{123456}}                                ->> 123 456
  1322   1322   TEST: {{1234567}}                               ->> 1 234 567
  1323   1323   TEST: {{12345678}}                              ->> 12 345 678
  1324   1324   TEST: {{023456789}}                             ->> 023 456 789|023 45 67 89|02 345 67 89
  1325   1325   TEST: {{0234567890}}                            ->> 0 234 567 890|02 34 56 78 90|023 456 78 90|0234 567-890
  1326   1326   TEST: {{12345678901}}                           ->> 12 345 678 901
  1327   1327   TEST: {{112798931830912839}}                    ->> 112 798 931 830 912 839
  1328   1328   TEST: {{2308393909}}                            ->> 2 308 393 909|2308 393-909
  1329   1329   TEST: {{2024}},9                                ->> 2 024
  1330   1330   TEST: {{4000}} Å                                ->> 4 000
         1331  +TEST: {{10010}} €                               ->> 10 010
  1331   1332   TEST: {{3240}} µA                               ->> 3 240
  1332   1333   TEST: 1111 0011,01 (binaire)
  1333   1334   
  1334   1335   
  1335   1336   __[s>(num_grand_nombre_avec_points)__
  1336   1337       \d\d?\d?(?:[.]\d\d\d)+(?![0-9])
  1337   1338           <<- option("num") ->> =\0.replace(".", " ")                                                 && Grands nombres : utilisez des espaces insécables plutôt que des points.
................................................................................
 13226  13227       >éclat [de|d’] [>voie|vois|voit]
 13227  13228       le son de [la|cette|quelle|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs] [>voie|vois|voit]
 13228  13229           <<- /conf/ --1>> voix       && Confusion. Pour évoquer un son humain, animal ou instrumental, écrivez “voix”.|https://fr.wiktionary.org/wiki/voix
 13229  13230   
 13230  13231       à [>voie|vois|voit] [basse|haute|basses|hautes]
 13231  13232           <<- /conf/ -2>> voix        && Confusion. Pour évoquer un son humain, animal ou instrumental, écrivez “voix”.|https://fr.wiktionary.org/wiki/voix
 13232  13233   
 13233         -    [>entendre|>écouter|>déblayer] ?@:[WX]¿ $:D [>voie|vois|voit]
 13234         -    >donner ?@:[WX]¿ [de|d’] la >voie
        13234  +    [>entendre|>écouter] ?@:[WX]¿ $:D [>voie|vois|voit]
        13235  +    [>donner|>redonner] ?@:[WX]¿ [de|d’] la >voie
 13235  13236       >faire entendre [la|cette|ma|ta|sa|notre|nos|votre|vos|leur+s] [>voie|vois|voit]
 13236  13237           <<- /conf/ --1>> voix       && Confusion. Pour évoquer un son humain, animal ou instrumental, écrivez “voix”.|https://fr.wiktionary.org/wiki/voix
 13237  13238   
 13238  13239       >avoir ?@:[WX]¿ [>voie|vois|voit] au chapitre
 13239  13240           <<- /conf/ --3>> voix       && Confusion. Locution “avoir voix au chapitre”.|https://fr.wiktionary.org/wiki/avoir_voix_au_chapitre
 13240  13241   
 13241  13242       ## voie
 13242  13243       sur la [bonne|mauvaise] voix
 13243  13244       en ?[si|très|trop]¿ [bonne|mauvaise] [voix|vois|voit]
 13244  13245       [du|au|le] long [de|d’] la [voix|vois|voit]
 13245  13246           <<- /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
 13246  13247   
 13247  13248       [>avancer|>cheminer|>marcher|>courir] ?@:[WX]¿ sur [la|cette|une|quelle] voix
 13248         -    [>emprunter|>indiquer|>montrer|>parcourir] ?@:[WX]¿ [la|cette|une|quelle] voix
        13249  +    [>déblayer|>emprunter|>indiquer|>montrer|>parcourir] ?@:[WX]¿ [la|cette|une|quelle] voix
 13249  13250           <<- /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
 13250  13251   
 13251  13252       >ouvrir ?@:[WX]¿ la voix [à|au|aux|<end>|,]
 13252  13253           <<- /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
 13253  13254   
 13254  13255       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]
 13255  13256       par voix de >conséquence
................................................................................
 17420  17421       >épreuve [de|d’] force
 17421  17422       >erreur [de|d’] [calcul|jeunesse|jugement|positionnement]
 17422  17423       >erreur d’ [appréciation|interprétation|orthographe]
 17423  17424       >escalier [de|d’] secours
 17424  17425       >escroquerie à l’ assurance
 17425  17426       >espérance [de|d’] vie
 17426  17427       >espérance [de|d’] vie en bonne santé
        17428  +    >essence [de|d’] térébenthine
 17427  17429       >état [de|d’] [âme|conservation|esprit|fait|service|urgence]
 17428  17430       >état d’ extrême urgence
 17429  17431       >état [de|d’] l’ art
 17430  17432       >étoile [de|d’] mer
 17431  17433       >étoile à neutrons
 17432  17434       >étui à cigarettes
 17433  17435       >examen d’ entrée