Overview
Comment: | [fr] formatNumber and missing nbsp merged |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | fr |
Files: | files | file ages | folders |
SHA3-256: |
3d0131a09791cf9ec473ad0038926469 |
User & Date: | olr on 2019-06-13 11:37:11 |
Other Links: | manifest | tags |
Context
2019-06-14
| ||
20:00 | [fr] nr confusions, +ajustements check-in: 5aa6eb0c1c user: olr tags: trunk, fr | |
2019-06-13
| ||
11:37 | [fr] formatNumber and missing nbsp merged check-in: 3d0131a097 user: olr tags: trunk, fr | |
2019-06-11
| ||
12:09 | [lo] graphic options: update labels check-in: 6e1bbe2d58 user: olr tags: trunk, lo | |
Changes
Modified gc_lang/fr/modules-js/gce_suggestions.js from [169148cf7b] to [b16b800b57].
︙ | ︙ | |||
554 555 556 557 558 559 560 | function suggLesLa (sWord) { if (_oSpellChecker.getMorph(sWord).some(s => s.includes(":p"))) { return "les|la"; } return "la"; } | | | | > | | < < < < < | | > > | | < | > > | > | | > > | > | > | < < < < | > | < > | | > > > | > | < > | 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 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 | function suggLesLa (sWord) { if (_oSpellChecker.getMorph(sWord).some(s => s.includes(":p"))) { return "les|la"; } return "la"; } function formatNumber (sNumber) { let nLen = sNumber.length; if (nLen < 4 ) { return sNumber; } let sRes = ""; if (!sNumber.includes(",")) { // Nombre entier sRes = _formatNumber(sNumber, 3); // 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; } function _formatNumber (sNumber, nGroup=3) { let sRes = ""; let nEnd = sNumber.length; while (nEnd > 0) { let nStart = Math.max(nEnd-nGroup, 0); sRes = sRes ? sNumber.slice(nStart, nEnd) + " " + sRes : sRes = sNumber.slice(nStart, nEnd); nEnd = nEnd - nGroup; } return sRes; } function formatNF (s) { try { let m = /NF[ -]?(C|E|P|Q|S|X|Z|EN(?:[ -]ISO|))[ -]?([0-9]+(?:[\/‑-][0-9]+|))/i.exec(s); |
︙ | ︙ |
Modified gc_lang/fr/modules/gce_suggestions.py from [a3e179165e] to [723b7412ac].
︙ | ︙ | |||
429 430 431 432 433 434 435 | if any( ":p" in sMorph for sMorph in _oSpellChecker.getMorph(sWord) ): return "les|la" return "la" _zBinary = re.compile("^[01]+$") | | | | > | | < < < < | | < < < < < < | | | | | | | | | | | > > > > > > | > > > > > > > | 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 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 | if any( ":p" in sMorph for sMorph in _oSpellChecker.getMorph(sWord) ): return "les|la" return "la" _zBinary = re.compile("^[01]+$") def formatNumber (sNumber): "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) # 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): sRes = "" nEnd = len(sNumber) while nEnd > 0: nStart = max(nEnd-nGroup, 0) sRes = sNumber[nStart:nEnd] + " " + sRes if sRes else sNumber[nStart:nEnd] nEnd = nEnd - nGroup return sRes def formatNF (s): "typography: format NF reference (norme française)" try: m = re.match("NF[ -]?(C|E|P|Q|S|X|Z|EN(?:[ -]ISO|))[ -]?([0-9]+(?:[/‑-][0-9]+|))", s) |
︙ | ︙ |
Modified gc_lang/fr/rules.grx from [adfe2758ac] to [29bdfd1cab].
︙ | ︙ | |||
1225 1226 1227 1228 1229 1230 1231 | !! !!!! Espaces insécables avant unités de mesure !! !! !! __[s]/unit(unit_nbsp_avant_unités1)__ ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹]|)) ?)(?:[kcmµn]?(?:[slgJKΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|°C|℃)(?![’']) @@0,0 | | | > | < | > > | < | > | 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 | !! !!!! Espaces insécables avant unités de mesure !! !! !! __[s]/unit(unit_nbsp_avant_unités1)__ ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹]|)) ?)(?:[kcmµn]?(?:[slgJKΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|°C|℃)(?![’']) @@0,0 <<- option("num") -1>> =formatNumber(\2) + " " # Avec une unité de mesure, mettez un espace insécable. <<- __else__ -1>> "\2 " # 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") -1>> =formatNumber(\2) + " " # 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__ -1>> "\2 " # 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") -1>> =formatNumber(\2) + " " # 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__ -1>> "\2 " # 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 TEST: Ça a duré {{3,5 }}µs TEST: il y en a {{3 }}m² TEST: il a fait {{10}}% TEST: Ça coûte {{13,4}}¥. TEST: il mesure {{30,3 }}cm |
︙ | ︙ |