Overview
Comment: | merge trunk |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | gcerw |
Files: | files | file ages | folders |
SHA3-256: |
9178b9116a9bf3d9bc0dd373486eb0a9 |
User & Date: | olr on 2020-04-18 16:16:04 |
Other Links: | branch diff | manifest | tags |
Context
2020-05-09
| ||
17:21 | merge trunk check-in: 607a6d50af user: olr tags: gcerw | |
2020-04-18
| ||
16:16 | merge trunk check-in: 9178b9116a user: olr tags: gcerw | |
16:14 | [fr] ajustements check-in: 5ae7d109af user: olr tags: trunk, fr | |
2020-04-17
| ||
20:46 | [tb] small update check-in: e85aa05f71 user: olr tags: tb, gcerw | |
Changes
Modified compile_rules.py from [ed8f69534c] to [cec64f3971].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | """ Grammalecte: compile rules """ import re import os import traceback import json import colorsys import time import compile_rules_js_convert as jsconv import compile_rules_graph as crg dDEFINITIONS = {} dDECLENSIONS = {} | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | """ Grammalecte: compile rules """ import re import os import traceback import json import colorsys import time import hashlib import compile_rules_js_convert as jsconv import compile_rules_graph as crg dDEFINITIONS = {} dDECLENSIONS = {} |
︙ | ︙ | |||
467 468 469 470 471 472 473 | print(" {:>6}: {}".format(nLine, " " * nLevel + sComment)) def make (spLang, sLang, bUseCache=False): "compile rules, returns a dictionary of values" # for clarity purpose, don’t create any file here | > > | | | > > > | < < | > > > > > > > > > > | | 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 | print(" {:>6}: {}".format(nLine, " " * nLevel + sComment)) def make (spLang, sLang, bUseCache=False): "compile rules, returns a dictionary of values" # for clarity purpose, don’t create any file here dCacheVars = None if os.path.isfile("_build/data_cache.json"): print("> data cache found") sJSON = open("_build/data_cache.json", "r", encoding="utf-8").read() dCacheVars = json.loads(sJSON) sBuildDate = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(dCacheVars.get("fBuildTime", 0))) if bUseCache: print("> use cache (no rebuild asked)") print(" build made at: " + sBuildDate) return dCacheVars print("> read rules file...") try: sFileContent = open(spLang + "/rules.grx", 'r', encoding="utf-8").read() except OSError: print("Error. Rules file in project [" + sLang + "] not found.") exit() xHasher = hashlib.new("sha3_512") xHasher.update(sFileContent.encode("utf-8")) sFileHash = xHasher.hexdigest() if dCacheVars and sFileHash == dCacheVars.get("sFileHash", ""): print("> cache hash identical to file hash, use cache") print(" build made at: " + sBuildDate) return dCacheVars # removing comments, zeroing empty lines, creating definitions, storing tests, merging rule lines print(" parsing rules...") fBuildTime = time.time() lRuleLine = [] lTest = [] lOpt = [] bGraph = False lGraphRule = [] for i, sLine in enumerate(sFileContent.split("\n"), 1): if sLine.startswith('#END'): # arbitrary end printBookmark(0, "BREAK BY #END", i) break elif sLine.startswith("#"): # comment pass |
︙ | ︙ | |||
624 625 626 627 628 629 630 631 632 633 634 635 636 637 | sJSCallables += " return " + jsconv.py2js(sReturn) + ";\n" sJSCallables += " },\n" displayStats(lParagraphRules, lSentenceRules) dVars = { "fBuildTime": fBuildTime, "callables": sPyCallables, "callablesJS": sJSCallables, "gctests": sGCTests, "gctestsJS": sGCTestsJS, "paragraph_rules": mergeRulesByOption(lParagraphRules), "sentence_rules": mergeRulesByOption(lSentenceRules), "paragraph_rules_JS": jsconv.writeRulesToJSArray(mergeRulesByOption(lParagraphRulesJS)), | > | 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 | sJSCallables += " return " + jsconv.py2js(sReturn) + ";\n" sJSCallables += " },\n" displayStats(lParagraphRules, lSentenceRules) dVars = { "fBuildTime": fBuildTime, "sFileHash": sFileHash, "callables": sPyCallables, "callablesJS": sJSCallables, "gctests": sGCTests, "gctestsJS": sGCTestsJS, "paragraph_rules": mergeRulesByOption(lParagraphRules), "sentence_rules": mergeRulesByOption(lSentenceRules), "paragraph_rules_JS": jsconv.writeRulesToJSArray(mergeRulesByOption(lParagraphRulesJS)), |
︙ | ︙ |
Modified compile_rules_graph.py from [b7d9668574] to [07d8ba5d53].
︙ | ︙ | |||
453 454 455 456 457 458 459 | def make (lRule, sLang, dDef, dDecl, dOptPriority): "compile rules, returns a dictionary of values" # for clarity purpose, don’t create any file here # removing comments, zeroing empty lines, creating definitions, storing tests, merging rule lines | | | 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 | def make (lRule, sLang, dDef, dDecl, dOptPriority): "compile rules, returns a dictionary of values" # for clarity purpose, don’t create any file here # removing comments, zeroing empty lines, creating definitions, storing tests, merging rule lines print(" parsing graph rules...") lTokenLine = [] lActions = [] bActionBlock = False nPriority = -1 dAllGraph = {} dGraphCode = {} sGraphName = "" |
︙ | ︙ | |||
541 542 543 544 545 546 547 | lActions.clear() iActionBlock += 1 else: print("Unknown line at:", iLine) print(sLine) # processing rules | | | 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 | lActions.clear() iActionBlock += 1 else: print("Unknown line at:", iLine) print(sLine) # processing rules print(" processing graph rules...") initProcessPoolExecutor() fStartTimer = time.time() # build graph lResult = [] nRule = 0 for sGraphName, lRuleLine in dAllGraph.items(): nRule += len(lRuleLine) |
︙ | ︙ |
Modified gc_lang/fr/data/phonet_simil.txt from [f5b40261bf] to [a259a1667c].
︙ | ︙ | |||
818 819 820 821 822 823 824 825 826 827 828 829 830 831 | vaine vaines veine veines viennes vairon vairons verrons verront val vals valent valet valets valais valait valaient valez vallée vallées vallon vallons valons vaux vaut vau veau veaux vos vent vents vend vends van vans ver vers verre verres vert verts vair vernis vernit verrat verrats verra verras verset versets verser veule veules veulent veux veut vœu vœux vil vils vile viles ville villes | > | 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 | vaine vaines veine veines viennes vairon vairons verrons verront val vals valent valet valets valais valait valaient valez vallée vallées vallon vallons valons vaux vaut vau veau veaux vos vent vents vend vends van vans vente ventes vante vantes vantent ver vers verre verres vert verts vair vernis vernit verrat verrats verra verras verset versets verser veule veules veulent veux veut vœu vœux vil vils vile viles ville villes |
︙ | ︙ |
Modified gc_lang/fr/rules.grx from [851f30ab1c] to [8db209f637].
︙ | ︙ | |||
425 426 427 428 429 430 431 | __<s>/typo(typo_point_collé_à_mot_suivant)__ [ ][.](?=\w) <<- ->> ". |." # L’espace se place après le point, et non avant (ou bien sert de liant entre deux lettres). TEST: Il a fini{{ .}} Va te faire foutre, connard. TEST: Merde{{ .}}Ça m’emmerde, ces trucs. # Trois points et espaces | > | | 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 | __<s>/typo(typo_point_collé_à_mot_suivant)__ [ ][.](?=\w) <<- ->> ". |." # L’espace se place après le point, et non avant (ou bien sert de liant entre deux lettres). TEST: Il a fini{{ .}} Va te faire foutre, connard. TEST: Merde{{ .}}Ça m’emmerde, ces trucs. # Trois points et espaces __<s>/typo(typo_points_suspension_après_espace)__ \w+([ ]…) @@$ <<- -1>> … # Pas d’espace avant le signe “…”. TEST: J’en ai marre{{ …}} c’est ça. ->> … TEST: ça va… # Virgules et espaces __<s>/typo(typo_virgule_entre_deux_espaces)__ "[ ],(?=[ ])" <<- ->> , # Pas d’espace avant une virgule. |
︙ | ︙ | |||
910 911 912 913 914 915 916 | __<s>/typo(typo_espace_manquant_après2)__ [?!;%‰‱˚»}]({w_1}|[({[]) @@$ <<- -1>> " \1" # Il manque un espace. __[s>/typo(typo_espace_manquant_après3)__ {w_1}[.]({w_1}|[({[]) @@$ <<- (\1.__len__() > 1 and not \1[0:1].isdigit() and spell(\1)) or after("^’") -1>> " \1" # Il manque un espace. __[s>/typo(typo_espace_manquant_après4)__ {w_2}[…]({w_1}|[({[]) @@$ | > | > > | 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 | __<s>/typo(typo_espace_manquant_après2)__ [?!;%‰‱˚»}]({w_1}|[({[]) @@$ <<- -1>> " \1" # Il manque un espace. __[s>/typo(typo_espace_manquant_après3)__ {w_1}[.]({w_1}|[({[]) @@$ <<- (\1.__len__() > 1 and not \1[0:1].isdigit() and spell(\1)) or after("^’") -1>> " \1" # Il manque un espace. __[s>/typo(typo_espace_manquant_après4)__ {w_2}[…]({w_1}|[({[]) @@$ <<- \1[0:1].isupper() or \1.__len__() > 5 or not \1.isalpha() or (\1.__len__() > 1 and spell(\1)) -1>> " \1" # Il manque un espace. TEST: J’en ai marre,{{ça}} suffit. ->> " ça" TEST: elle est délirante.{{Devine}} ce qu’elle a dit. ->> " Devine" TEST: Voilà,{{il}} manque un espace. ->> " il" TEST: Dernier essai.{{Voilà}}, c’est ça. ->> " Voilà" TEST: muni de lunettes protectrices et.{{d}}’un casque. ->> " d" TEST: espace:{{manquant}} ->> " manquant" TEST: espace{{;}}{{manquant}} TEST: espace ;{{manquant}} ->> " manquant" TEST: espace{{?}}{{manquant}} TEST: espace{{!}}{{manquant}} TEST: une espace ?{{(}}oui ou non) ->> " (" TEST: espace.{{Manquant}} ->> " Manquant" TEST: C’est bien.{{Les}} invités seront contents. ->> " Les" TEST: qui ont refusé.{{de}} se sauver ->> " de" TEST: Y parvenir quoi qu’il en soit.{{Le}} sort en est jeté. ->> " Le" TEST: merde…{{Ça}} suffit ->> " Ça" TEST: merde…{{(}}je suis fatigué) ->> " (" TEST: ça deviendra…{{compliqué}} ->> " compliqué" TEST: ça se croit…{{fort}}… n’est-ce pas ? ->> " fort" TEST: pic.twitter.com/PICNAME !! !! !!!! Points !! !! |
︙ | ︙ | |||
3866 3867 3868 3869 3870 3871 3872 | TEST: ce que je veux c’est ce {{véhicule ci}} TEST: Laisse ce chiot là où il est ! TEST: Ce fut là en fait une appellation fautive ### Préfixes __tu_préfixe_ex__ | > > > | > > | | > > | 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 | TEST: ce que je veux c’est ce {{véhicule ci}} TEST: Laisse ce chiot là où il est ! TEST: Ce fut là en fait une appellation fautive ### Préfixes __tu_préfixe_ex__ l’ ex @:[NT]¬* <<- /tu/ not value(\3, "|aequo|nihilo|cathedra|absurdo|abrupto|") -2:3>> \2-\3 # S’il s’agit d’un seul mot, il manque un trait d’union. ex [>ami|>patron|>locataire] ex @:N¬:[AGWMV] <<- /tu/ not value(\2, "|aequo|nihilo|cathedra|absurdo|abrupto|") and not value(<1, "|l’|") ->> \1-\2 # S’il s’agit d’un seul mot, il manque un trait d’union. TEST: l’{{ex fournisseur}} de ce produit TEST: Son {{ex ami}} est un vrai cauchemar. TEST: Mon ex alcoolique TEST: Ton ex donne du fil à retordre. __tu_préfixe_in__ in [dix-huit|douze|seize|folio|octavo|quarto|plano] <<- /tu/ not value(<1, "|drive|plug|sit|") ->> \1-\2 # Il manque un trait d’union. |
︙ | ︙ | |||
9282 9283 9284 9285 9286 9287 9288 | depuis l’ [année|heure|instant] ou <<- /conf/ --1>> où # Confusion. La conjonction “ou” signale une alternative. Pour évoquer un lieu, un temps ou une situation, écrivez “où”. >être ?$:W¿ dans [une|cette|la] situation ou [vient|vint|viendra|viendrait] un temps ou <<- /conf/ --1>> où # Confusion probable. La conjonction “ou” signale une alternative. Pour évoquer un lieu, un temps ou une situation, écrivez “où”. | | | 9293 9294 9295 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 | depuis l’ [année|heure|instant] ou <<- /conf/ --1>> où # Confusion. La conjonction “ou” signale une alternative. Pour évoquer un lieu, un temps ou une situation, écrivez “où”. >être ?$:W¿ dans [une|cette|la] situation ou [vient|vint|viendra|viendrait] un temps ou <<- /conf/ --1>> où # Confusion probable. La conjonction “ou” signale une alternative. Pour évoquer un lieu, un temps ou une situation, écrivez “où”. [là|>aller] ou le vent <<- /conf/ -2>> où # Confusion. La conjonction “ou” signale une alternative. Pour évoquer un lieu, un temps ou une situation, écrivez “où”. TEST: {{Ou}} sont tes affaires ? ->> Où TEST: au moment {{ou}} elle allait enfin réussir ->> où TEST: je ne sais même pas par {{ou}} commencer ->> où TEST: {{ou}} et comment s’y prendre ->> où TEST: vers {{ou}} se tourner quand tout va mal ? ->> où |
︙ | ︙ | |||
9792 9793 9794 9795 9796 9797 9798 | TEST: depuis {{prêt}} de 10 minutes TEST: depuis {{prés}} de vingt siècles. TEST: collait au millimètre près à la réalité # prix / pris __conf_prix_pris__ | | > | 9803 9804 9805 9806 9807 9808 9809 9810 9811 9812 9813 9814 9815 9816 9817 9818 9819 | TEST: depuis {{prêt}} de 10 minutes TEST: depuis {{prés}} de vingt siècles. TEST: collait au millimètre près à la réalité # prix / pris __conf_prix_pris__ [à|a] n’importe [quel+s] pris quel est [le|mon|ton|son|notre|votre|leur|leurs] pris à [quel+s] pris <<- /conf/ --1>> prix # Confusion : pour évoquer la valeur d’une chose, écrivez “prix”.|https://fr.wiktionary.org/wiki/prix prix dans [la|une|cette] [tourmente|tempête|tornade] prix dans [la|une|cette] coulée de [boue|lave] prix dans l’ [orage|ouragan] prix dans les [flots|vagues|tempêtes|tornades|orages|ouragans] prix par surprise |
︙ | ︙ | |||
10337 10338 10339 10340 10341 10342 10343 | TEST: Méfiez-vous de cette {{soi-disante}} sorcière. TEST: Méfiez-vous de cette {{soit-disant}} sorcière. TEST: Méfiez-vous de cette {{soi disant}} sorcière. __conf_soi_soit_soie__ | | | | | > > > > > > > > > > > > | 10349 10350 10351 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 | TEST: Méfiez-vous de cette {{soi-disante}} sorcière. TEST: Méfiez-vous de cette {{soit-disant}} sorcière. TEST: Méfiez-vous de cette {{soi disant}} sorcière. __conf_soi_soit_soie__ [chez|sur|avec|pour] [soit|sois] don de [soit|sois] estime de [soit|sois] <<- /conf/ not after(" soit ") --1>> soi # Confusion probable. [ça|cela|ceci] >aller ?$:W¿ de soit <<- /conf/ not after(" soit ") --1>> soi # Confusion probable.|https://fr.wiktionary.org/wiki/aller_de_soi en soit <<- /conf/ morph(>1, ":[GY]|<end>", ">à/") and not value(<1, "|il|on|elle|n’|m’|t’|s’|") and not before("(?i)quel(?:s|les?|) qu[’ ]$") and not after(" soit ") -2>> soi # Confusion probable. [soi|sois|soit|>soie] >même <<- /conf/ morph(<1, ":[YQ]|>(?:avec|contre|par|pour|sur)/|<start>|>,") ->> soi-même # Confusion probable : moi-même, toi-même, lui-même, elle-même, soi-même, elles-mêmes, eux-mêmes. [sois-même|soit-même|soie-même|soies-même|soi-mêmes|sois-mêmes|soit-mêmes|soie-mêmes|soies-mêmes] <<- /conf/ ->> soi-même # Confusion : moi-même, toi-même, lui-même, elle-même, soi-même, elles-mêmes, eux-mêmes. que sa soi @:[WXAQ] <<- /conf/ -3>> soit|soie # Confusion. Pour le verbe être au subjonctif, écrivez “soit”. Pour la fibre servant à la confection de textile, écrivez “soie”. >être [soi+s|>soie] [moi|toi|lui|elle|nous|vous|eux|iel|iels] ?,¿ [soit|soi+s|>soie] >être [soi+s|>soie] [moi|toi|lui|elle|nous|vous|eux|iel|iels] ?,¿ [soit|soi+s|>soie] >être [soi+s|>soie] $:D $:N ?,¿ [soit|soi+s|>soie] <<- /conf/ morph(\1, "[123][sp]") -2>> soit # Pour évoquer une possibilité, écrivez “soit”.|https://fr.wiktionary.org/wiki/soit#Conjonction >être soit [moi|toi|lui|elle|nous|vous|eux|iel|iels] ?,¿ [soit|soi+s|>soie] >être soit [moi|toi|lui|elle|nous|vous|eux|iel|iels] ?,¿ [soit|soi+s|>soie] >être soit $:D $:N ?,¿ [soit|soi+s|>soie] <<- /conf/ morph(\1, "[123][sp]") --1>> soit # Pour évoquer une possibilité, écrivez “soit”.|https://fr.wiktionary.org/wiki/soit#Conjonction TEST: chez {{soit}}, c’est presque toujours mieux. TEST: ce n’est pas la philosophie en {{soit}} qui est problématique TEST: quel que {{soie}} sa pensée, je refuse d’y accorder de l’attention. TEST: Penser par {{soit même}}… TEST: S’aimer {{soit-même}}, c’est le début d’une grande histoire d’amour. (Oscar Wilde) TEST: pas sûr que {{sa}} {{soi}} terminé avant demain TEST: Cela va presque de {{soit}} TEST: c’est {{soi}} lui, soit moi ->> soit TEST: ce serait soit elle, {{soie}} une inconnue ->> soit TEST: Je regrette que l’on en soit encore à des considérations que je croyais dépassées TEST: Quoi qu’il en soit TEST: À moins qu’elle n’en soit la victime. TEST: Je doute qu’il s’en soit sorti si aisément. TEST: Je refuse, quoi qu’il en soit. TEST: on ne s’étonne plus que le parquet de Paris en soit à agir sous l’effet de quelque urgence médiatique TEST: Vous êtes soit pour soit contre, mais pas les deux en même temps |
︙ | ︙ | |||
10650 10651 10652 10653 10654 10655 10656 | TEST: ce n’est pas contre {{toit}} TEST: sous son {{toi}}, c’est sa loi qui prime. # tour à tour __conf_tour_à_tour__ | | | < < | 10674 10675 10676 10677 10678 10679 10680 10681 10682 10683 10684 10685 10686 10687 10688 10689 10690 | TEST: ce n’est pas contre {{toit}} TEST: sous son {{toi}}, c’est sa loi qui prime. # tour à tour __conf_tour_à_tour__ !! tour à tour ¡¡ [tour+s|>tourd] [à|a] [tour+s|>tourd] <<- /conf/ ->> tour à tour # Locution adverbiale invariable. Écrivez “tour à tour”.|https://fr.wiktionary.org/wiki/tour_%C3%A0_tour TEST: ils sont {{tours à tours}} fâchés. # tout à coup __conf_tout_à_coup__ !! tout à coup ¡¡ |
︙ | ︙ | |||
10681 10682 10683 10684 10685 10686 10687 | [toute|toutes] [chose+s|chosent] [égale+s|égal+s|égalent] [par|>part|pare+s] ailleurs <<- /conf/ ->> toutes choses égales par ailleurs # Confusion.|https://fr.wiktionary.org/wiki/toutes_choses_%C3%A9gales_par_ailleurs TEST: {{Toutes choses égales part ailleurs}}. TEST: ce serait, toutes choses égales par ailleurs, la meilleure solution possible. | > > > > > > > > > > > > > > > > | | 10703 10704 10705 10706 10707 10708 10709 10710 10711 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 | [toute|toutes] [chose+s|chosent] [égale+s|égal+s|égalent] [par|>part|pare+s] ailleurs <<- /conf/ ->> toutes choses égales par ailleurs # Confusion.|https://fr.wiktionary.org/wiki/toutes_choses_%C3%A9gales_par_ailleurs TEST: {{Toutes choses égales part ailleurs}}. TEST: ce serait, toutes choses égales par ailleurs, la meilleure solution possible. # très / trait __conf_très_trait__ [un|le|ce|mon|ton|son|notre|votre|leur] [trait|traits|trais|traie|traies|traient] @:A.*:[me]:[si]¬:G @:N.*:[me]:[si]¬:(?:G|3[sp]) <<- /conf/ -2>> très # Confusion possible. Si “\3” est bien l’adjectif de “\4” et que vous voulez que le “\4” est beaucoup “\3”, utilisez l’adverbe “très”.|https://fr.wiktionary.org/wiki/tr%C3%A8s [des|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs] [trait|traits|trais|traie|traies|traient] @:A.*:[me]:[pi]¬:G @:N.*:[me]:[pi]¬:(?:G|3[sp]) <<- /conf/ -2>> très # Confusion possible. Si “\3” est bien l’adjectif de “\4” et que vous voulez que les “\4” sont beaucoup “\3”, utilisez l’adverbe “très”.|https://fr.wiktionary.org/wiki/tr%C3%A8s TEST: un {{trait}} petit homme TEST: les {{traits}} mauvais choix du patron nous ont conduits à la ruine. TEST: je ne les trais pas, mais il le faudrait. TEST: un trait mal dessiné TEST: je lui lançais un trait bien piquant # un tant soit peu __conf_un_tant_soit_peu__ !! un tant soit peu ¡¡ [un|1] [temps|>tan|tant] [soi|sois|>soie|soit] [peu|peux|peut] <<- /conf/ ->> un tant soit peu # Confusion. Écrivez “un tant soit peu”.|https://fr.wiktionary.org/wiki/tant_soit_peu TEST: {{un temps soit peu}} perdu dans cette affaire. TEST: ils l’avaient {{1 tant soi peu}} oublié TEST: être un tant soit peu courageux, ça ne peut pas faire de mal |
︙ | ︙ | |||
12389 12390 12391 12392 12393 12394 12395 | dans un [premier|second] temps dans une [certaine|large|moindre] mesure d’ abord d’ affilée d’ ailleurs d’ alors d’ année en année | | | > > > > | < < | 12427 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 12440 12441 12442 12443 12444 12445 12446 12447 12448 12449 | dans un [premier|second] temps dans une [certaine|large|moindre] mesure d’ abord d’ affilée d’ ailleurs d’ alors d’ année en année d’ antan d’ après-guerre d’ [arrache-pied|arrachepied] d’ arrière en avant d’ aujourd’hui d’ autant [plus|moins] d’ autre part d’ autrefois d’ autres fois d’ avant en arrière d’ à côté d’ âge mûr d’ emblée d’ empoigne d’ en [bas|dessous|face|haut] d’ entre [nous|vous|eux|elles] |
︙ | ︙ | |||
12524 12525 12526 12527 12528 12529 12530 12531 12532 12533 12534 12535 12536 12537 | [de|d’] pure forme [de|d’] sang-froid [de|d’] seconde [catégorie|importance|main|zone] [de|d’] semaine en semaine [de|d’] si bon matin [de|d’] si bonne heure [de|d’] siècle en siècle [de|d’] source sûre [de|d’] taille moyenne [de|d’] telle sorte [de|d’] temps à autre [de|d’] temps en temps [de|d’] [très|trop] [loin|près] [de|d’] vive voix | > | 12564 12565 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 12578 | [de|d’] pure forme [de|d’] sang-froid [de|d’] seconde [catégorie|importance|main|zone] [de|d’] semaine en semaine [de|d’] si bon matin [de|d’] si bonne heure [de|d’] siècle en siècle [de|d’] sinistre mémoire [de|d’] source sûre [de|d’] taille moyenne [de|d’] telle sorte [de|d’] temps à autre [de|d’] temps en temps [de|d’] [très|trop] [loin|près] [de|d’] vive voix |
︙ | ︙ | |||
13690 13691 13692 13693 13694 13695 13696 | # END OF NG #<end> #@:[VR]¬[NAP] #, @¬:[NA] #[ne|n’|me|m’|te|t’|se|s’|le|la|l’|les|leur|leur|mon|ma|ta|sa|notre|votre|mes|tes|ses|ce|cet|cette|ces|je|j’|tu|il|on|nous|vous|ils|iels|ça|ceci|cela|c’|ç’|chaque] | | | 13731 13732 13733 13734 13735 13736 13737 13738 13739 13740 13741 13742 13743 13744 13745 | # END OF NG #<end> #@:[VR]¬[NAP] #, @¬:[NA] #[ne|n’|me|m’|te|t’|se|s’|le|la|l’|les|leur|leur|mon|ma|ta|sa|notre|votre|mes|tes|ses|ce|cet|cette|ces|je|j’|tu|il|on|nous|vous|ils|iels|ça|ceci|cela|c’|ç’|chaque] __substantifs_multi_mots__ abus [de|d’] position dominante abus [de|d’] pouvoir >accusé [de|d’] reception >acte [de|d’] [baptême|caution|cautionnement|cession|contrition|licitation|mariage|naissance|notoriété|propriété|quittance|reconnaissance|répudiation|vente] >acte d’ [achat|engagement] >acte [de|d’] gestion ?courante¿ >acte [de|d’] procédure ?pénale¿ |
︙ | ︙ | |||
13789 13790 13791 13792 13793 13794 13795 13796 13797 13798 13799 13800 13801 13802 | [clair+s] [de|d’] lune >classement sans suite [>clé|>clef] à molette >clin d’ œil >clause [de|d’] [confidentialité|non-concurrence] >clause [de|d’] non concurrence >code [de|d’] ?bonne¿ conduite >commis d’ office >compagne [de|d’] route >compagnon [de|d’] route >complémentaire santé [composante+s] alpha >compte à rebours >compte offshore | > | 13830 13831 13832 13833 13834 13835 13836 13837 13838 13839 13840 13841 13842 13843 13844 | [clair+s] [de|d’] lune >classement sans suite [>clé|>clef] à molette >clin d’ œil >clause [de|d’] [confidentialité|non-concurrence] >clause [de|d’] non concurrence >code [de|d’] ?bonne¿ conduite >colosse aux pieds d’ argile >commis d’ office >compagne [de|d’] route >compagnon [de|d’] route >complémentaire santé [composante+s] alpha >compte à rebours >compte offshore |
︙ | ︙ | |||
13825 13826 13827 13828 13829 13830 13831 | >cure [de|d’] [désintoxication|désintox] >déclaration sur l’ honneur >délai [de|d’] [attente|carence|connexion|prescription|préavis|rétraction|rigueur] >demande d’ asile >descente aux [enfers|flambeaux] dieu tout-puissant [>dîner|>diner] aux chandelles | < < | 13867 13868 13869 13870 13871 13872 13873 13874 13875 13876 13877 13878 13879 13880 | >cure [de|d’] [désintoxication|désintox] >déclaration sur l’ honneur >délai [de|d’] [attente|carence|connexion|prescription|préavis|rétraction|rigueur] >demande d’ asile >descente aux [enfers|flambeaux] dieu tout-puissant [>dîner|>diner] aux chandelles >don en nature >donneur [de|d’] >leçon >dossier d’ inscription ?[administrative|scolaire]¿ >dossier [de|d’] presse >eau [de|d’] [bouleau|bleuet|chaux|coco|javel|jouvence|mer|parfum|pluie|seltz|source|vie] >eau [de|d’] noix [de|d’] coco >économie [de|d’] >bout [de|d’] >chandelle |
︙ | ︙ | |||
13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 13904 13905 | >frayeur [de|d’] tous les diables >frousse [de|d’] tous les diables >fusil à pompe >garde à vue >garde du corps gaz à >effet [de|d’] serre >gilet [de|d’] sauvetage >grain [de|d’] [blé|maïs|sable] >grève [de|d’] la faim >groupe [de|d’] [discussion|parole|prière|pression|travail] >guerre éclair >hall d’ entrée >harcèlement [de|d’] rue >heure [sup|sup’] | > | 13932 13933 13934 13935 13936 13937 13938 13939 13940 13941 13942 13943 13944 13945 13946 | >frayeur [de|d’] tous les diables >frousse [de|d’] tous les diables >fusil à pompe >garde à vue >garde du corps gaz à >effet [de|d’] serre >gilet [de|d’] sauvetage >gouvernement d’ union nationale >grain [de|d’] [blé|maïs|sable] >grève [de|d’] la faim >groupe [de|d’] [discussion|parole|prière|pression|travail] >guerre éclair >hall d’ entrée >harcèlement [de|d’] rue >heure [sup|sup’] |
︙ | ︙ | |||
14012 14013 14014 14015 14016 14017 14018 | >police [de|d’] [caractères|écriture] >politique spectacle >pomme [de|d’] [discorde|terre|reinette|pin|Adam|api|amour|ambre|eau|or] >pompe à [chaleur|essence|fric] >port [de|d’] plaisance >porte [de|d’] [entrée|service|garage|sortie] >porte d’ entrée | | | | 14053 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 14066 14067 14068 14069 14070 14071 14072 14073 14074 14075 14076 14077 14078 14079 14080 14081 14082 14083 | >police [de|d’] [caractères|écriture] >politique spectacle >pomme [de|d’] [discorde|terre|reinette|pin|Adam|api|amour|ambre|eau|or] >pompe à [chaleur|essence|fric] >port [de|d’] plaisance >porte [de|d’] [entrée|service|garage|sortie] >porte d’ entrée >pot [de|d’] [chambre|colle|départ] >poudre aux yeux >pouvoir d’ achat >presse à >scandale preuve ?suffisante¿ du contraire preuves ?suffisantes¿ du contraire >pure comme [le|du] cristal prix [de|d’] revient quelqu’un d’ autre >question [de|d’] vie ou [de|d’] mort >rapport [de|d’] force >rat [de|d’] bibliothèque >rayon [de|d’] soleil >réaction en [chaîne|chaine] région Grand Est >règlement [de|d’] comptes >sujet [de|d’] préoccupation >requête en nullité >requête en non [conciliation|inscription|lieu] >requête en non révocation [de|d’] sursis >responsable qualité [>resto|>restau] u >retour à la case départ >revue [de|d’] presse |
︙ | ︙ | |||
14136 14137 14138 14139 14140 14141 14142 14143 14144 14145 14146 14147 14148 14149 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 14166 14167 | >con comme un balai >con comme une valise sans >poignée >corvéable à merci >court sur pattes [cousu+ses] [main] [cousu+ses] [de|d’] fil blanc [daté+ses] du [1er|1ᵉʳ|1|01|2|02|3|03|4|04|5|05|6|06|7|07|8|08|9|09|10|11|12|13|14|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31] {mois} ?[prochain|passé|dernier|~^[0-9]{2,5}$]¿ >droit comme un i >fort en gueule >fou de rage ?[contenue|retenue]¿ >élu à la majarité absolue >haut comme [trois|3] pommes >haut en couleur [libéré+ses] sur parole >lent à la détente >mort de trouille >nu comme un ver >nu comme des vers >nul et non >avenu >noir comme la nuit >noir comme une nuit sans lune [réglé+ses] comme du papier à musique [remis+es] à plat >sain [de|d’] [corps|esprit] >sain [de|d’] [corps|esprit] et [de|d’] [corps|esprit] >têtu comme une [bourrique|mule] >têtu comme un [âne|bourriquot|mulet] <<- ~2:0>> * flambant >neuf <<- ~1>> * | > > > | 14177 14178 14179 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 14192 14193 14194 14195 14196 14197 14198 14199 14200 14201 14202 14203 14204 14205 14206 14207 14208 14209 14210 14211 | >con comme un balai >con comme une valise sans >poignée >corvéable à merci >court sur pattes [cousu+ses] [main] [cousu+ses] [de|d’] fil blanc [daté+ses] du [1er|1ᵉʳ|1|01|2|02|3|03|4|04|5|05|6|06|7|07|8|08|9|09|10|11|12|13|14|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31] {mois} ?[prochain|passé|dernier|~^[0-9]{2,5}$]¿ >digne [de|d’] [confiance|foi] >digne [de|d’] ce nom >droit comme un i >fort en gueule >fou de rage ?[contenue|retenue]¿ >élu à la majarité absolue >haut comme [trois|3] pommes >haut en couleur [libéré+ses] sur parole >lent à la détente >mort de trouille >nu comme un ver >nu comme des vers >nul et non >avenu >noir comme la nuit >noir comme une nuit sans lune [réglé+ses] comme du papier à musique [remis+es] à plat >sain [de|d’] [corps|esprit] >sain [de|d’] [corps|esprit] et [de|d’] [corps|esprit] >sourd comme un pot >têtu comme une [bourrique|mule] >têtu comme un [âne|bourriquot|mulet] <<- ~2:0>> * flambant >neuf <<- ~1>> * |
︙ | ︙ | |||
14714 14715 14716 14717 14718 14719 14720 14721 14722 14723 14724 14725 14726 14727 | à l’ époque @¬:A.*:[fe]:[si] à l’ époque [<end>|,|)] <<- ~1:3>> * à répétition @¬:A.*:[fe]:[si] à répétition [<end>|,|)] <<- ~1:2>> * au [départ|quotidien] @:¬:A.*:[me]:[si] au [départ|quotidien] [<end>|,|)] <<- ~1:2>> * au pire @:A¬:N.*:[me]:[si] au pire [<end>|,|)] | > > > > | 14758 14759 14760 14761 14762 14763 14764 14765 14766 14767 14768 14769 14770 14771 14772 14773 14774 14775 | à l’ époque @¬:A.*:[fe]:[si] à l’ époque [<end>|,|)] <<- ~1:3>> * à répétition @¬:A.*:[fe]:[si] à répétition [<end>|,|)] <<- ~1:2>> * au bout d’ un moment @:¬:A.*:[me]:[si] au bout d’ un moment [<end>|,|)] <<- ~1:5>> * au [départ|quotidien] @:¬:A.*:[me]:[si] au [départ|quotidien] [<end>|,|)] <<- ~1:2>> * au pire @:A¬:N.*:[me]:[si] au pire [<end>|,|)] |
︙ | ︙ | |||
14857 14858 14859 14860 14861 14862 14863 14864 14865 14866 14867 14868 14869 14870 | [de|d’] [façon|manière] ?non¿ @:A.*:[fe]:[si] et ?non¿ @:A.*:[fe]:[si]¬:[GM] [de|d’] [façon|manière] ?non¿ @:A.*:[fe]:[si] <<- ~>> * le plus clair [de|d’] [mon|ton|son|notre|votre|leur] temps @:¬:A:[me]:[si]|>d[e’]/ le plus clair [de|d’] [mon|ton|son|notre|votre|leur] temps [<end>|,|)] <<- ~1:6>> * pour partie @:¬:A.*:f:s pour partie [<end>|,|)] <<- ~1:2>> * semblait-il semble-t-il | > > > > | 14905 14906 14907 14908 14909 14910 14911 14912 14913 14914 14915 14916 14917 14918 14919 14920 14921 14922 | [de|d’] [façon|manière] ?non¿ @:A.*:[fe]:[si] et ?non¿ @:A.*:[fe]:[si]¬:[GM] [de|d’] [façon|manière] ?non¿ @:A.*:[fe]:[si] <<- ~>> * le plus clair [de|d’] [mon|ton|son|notre|votre|leur] temps @:¬:A:[me]:[si]|>d[e’]/ le plus clair [de|d’] [mon|ton|son|notre|votre|leur] temps [<end>|,|)] <<- ~1:6>> * pour de bon @:¬:[NA].*:m:s pour de bon [<end>|,|)] <<- ~1:3>> * pour partie @:¬:A.*:f:s pour partie [<end>|,|)] <<- ~1:2>> * semblait-il semble-t-il |
︙ | ︙ | |||
15001 15002 15003 15004 15005 15006 15007 15008 15009 15010 15011 15012 15013 15014 | >faire amende honorable >faire bande à part >faire bon accueil >faire bonne figure >faire chou blanc >faire copain copain >faire de [mon|ton|son|notre|votre|leur] mieux >faire figure d’ exception >faire front commun >faire grise mine >faire grand [bruit|cas] >faire ?[bonne|excellente|grande|mauvaise]¿ impression >faire long feu >faire [machine|marche] arrière | > | 15053 15054 15055 15056 15057 15058 15059 15060 15061 15062 15063 15064 15065 15066 15067 | >faire amende honorable >faire bande à part >faire bon accueil >faire bonne figure >faire chou blanc >faire copain copain >faire de [mon|ton|son|notre|votre|leur] mieux >faire faux bond >faire figure d’ exception >faire front commun >faire grise mine >faire grand [bruit|cas] >faire ?[bonne|excellente|grande|mauvaise]¿ impression >faire long feu >faire [machine|marche] arrière |
︙ | ︙ | |||
15064 15065 15066 15067 15068 15069 15070 15071 15072 15073 15074 15075 15076 15077 | >prendre bonne note >prendre [congé|conscience|contact|ombrage|note|peur|position|possession|racine|soin|vie] >prendre d’ assaut >prendre [de|d’] [court|vitesse] >prendre ?[ça|cela|ceci]¿ en charge >prendre ?[ça|cela|ceci]¿ pour argent comptant >prendre par surprise >prêter à confusion >prêter main forte >prêter main-forte >rebrousser chemin >réduire à néant >réduire en miettes >refaire surface | > | 15117 15118 15119 15120 15121 15122 15123 15124 15125 15126 15127 15128 15129 15130 15131 | >prendre bonne note >prendre [congé|conscience|contact|ombrage|note|peur|position|possession|racine|soin|vie] >prendre d’ assaut >prendre [de|d’] [court|vitesse] >prendre ?[ça|cela|ceci]¿ en charge >prendre ?[ça|cela|ceci]¿ pour argent comptant >prendre par surprise >prendre pour argent comptant >prêter à confusion >prêter main forte >prêter main-forte >rebrousser chemin >réduire à néant >réduire en miettes >refaire surface |
︙ | ︙ | |||
17014 17015 17016 17017 17018 17019 17020 17021 17022 17023 17024 17025 17026 17027 | TEST: {{Attendues}} qu’on n’en sait rien, impossible de tirer des conclusions définitives. TEST: Il viendra, étant {{donnée}} son addiction… TEST: {{Vues}} les idioties qu’on entend, normal qu’on perde la tête. TEST: {{Passées}} les premières heures du jour… TEST: Il faut même être indulgent pour accorder une place à cette dernière, vu qu’elle a pour condition le mensonge des instincts TEST: Vu la dureté extrême des conditions de survie… #### Nombres cardinaux # vingt __sgpl_vingt__ vingts <<- /sgpl/ not value(<1, "|quatre|") ->> vingt # “Vingt” ne prend la marque du pluriel que dans “quatre-vingts”. | > > > > > > > > > > > > > > | 17068 17069 17070 17071 17072 17073 17074 17075 17076 17077 17078 17079 17080 17081 17082 17083 17084 17085 17086 17087 17088 17089 17090 17091 17092 17093 17094 17095 | TEST: {{Attendues}} qu’on n’en sait rien, impossible de tirer des conclusions définitives. TEST: Il viendra, étant {{donnée}} son addiction… TEST: {{Vues}} les idioties qu’on entend, normal qu’on perde la tête. TEST: {{Passées}} les premières heures du jour… TEST: Il faut même être indulgent pour accorder une place à cette dernière, vu qu’elle a pour condition le mensonge des instincts TEST: Vu la dureté extrême des conditions de survie… #### ce + sont / étaient __conf_ce_être_pluriel__ ce [sont|seront|seraient|furent] [de|d’] @:A.*:s¬:[Gpi] @:N¬:G c’ étaient [de|d’] @:A.*:s¬:[Gpi] @:N¬:G [c’|ç’] avaient été [de|d’] @:A.*:s¬:[Gpi] @:N¬:G <<- /sgpl/ --2>> =suggPlur(\-2) # Après “ce sont”, il est vraisemblable que ce qui est évoqué soit au pluriel. TEST: ce sont de {{beau}} jouet ->> beaux TEST: ç’avaient été de {{belle}} festivité TEST: ce furent de {{large}} étude sur plusieurs années TEST: ce sont d’autre part des petits malins. #### Nombres cardinaux # vingt __sgpl_vingt__ vingts <<- /sgpl/ not value(<1, "|quatre|") ->> vingt # “Vingt” ne prend la marque du pluriel que dans “quatre-vingts”. |
︙ | ︙ | |||
17607 17608 17609 17610 17611 17612 17613 | [>brûler|>bruler] a vif >charger a blanc >chauffer a blanc >fermer a [>clé|>clef] [>gonfler|>regonfler] a bloc >jeter a terre [>mettre|>remettre] a [bas|>flot|>jour|>niveau|>nu|>plat|>table|>terre] | < > | 17675 17676 17677 17678 17679 17680 17681 17682 17683 17684 17685 17686 17687 17688 17689 17690 | [>brûler|>bruler] a vif >charger a blanc >chauffer a blanc >fermer a [>clé|>clef] [>gonfler|>regonfler] a bloc >jeter a terre [>mettre|>remettre] a [bas|>flot|>jour|>niveau|>nu|>plat|>table|>terre] [>mettre|>remettre] a l’ [écart|épreuve] >naviguer a [vu+ses] >parer a toute éventualité >passer a tabac >percer a jour >prendre a la légère >prêter a >confusion >réduire a néant >saigner a blanc |
︙ | ︙ | |||
17637 17638 17639 17640 17641 17642 17643 | >donner [sens|suite] a enclin a en être [réduit+ses] a en proie a >laisser libre cours a >parvenir a >prêter attention a | > | > | | 17705 17706 17707 17708 17709 17710 17711 17712 17713 17714 17715 17716 17717 17718 17719 17720 17721 17722 17723 17724 17725 17726 17727 17728 17729 17730 17731 17732 17733 17734 17735 | >donner [sens|suite] a enclin a en être [réduit+ses] a en proie a >laisser libre cours a >parvenir a >prêter attention a <<- /conf/ \-1 != "A" and not tag_before(\1, "_àCOI_") and not value(>1, "|été|") --1>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”.|http://fr.wiktionary.org/wiki/%C3%A0 >appeler a >avoir du mal a >commencer a >condamner a >dire [adieu|merde] a >faire confiance a >faire faux bond a >mentir a >préparer a >prêter serment a >rendre service a >réussir a >viser a <<- /conf/ not tag_before(\1, "_propsub_") and not morph(\1, ":Y") and not value(>1, "|été|") --1>> à # Confusion probable : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”.|http://fr.wiktionary.org/wiki/%C3%A0 @:V¬:[YGNAWM] a <<- /conf/ \-1 != "A" and not tag_before(\1, "_propsub_") and not morph(>1, ":Q") --1>> à # Confusion probable : “a” est la conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”.|http://fr.wiktionary.org/wiki/%C3%A0 [/VCint|/VCimp] a |
︙ | ︙ | |||
18139 18140 18141 18142 18143 18144 18145 | # ce / se __conf_ce_se_verbe__ [<start>|,|(] se [ne|n’] [>être|>devoir|>pouvoir] [<start>|,|(] se [sera|serait|seraient|sont|seront|fut|fût|furent|fussent] $:D [<start>|,|(] se >devoir être [<start>|,|(] se >pouvoir être | | | 18209 18210 18211 18212 18213 18214 18215 18216 18217 18218 18219 18220 18221 18222 18223 | # ce / se __conf_ce_se_verbe__ [<start>|,|(] se [ne|n’] [>être|>devoir|>pouvoir] [<start>|,|(] se [sera|serait|seraient|sont|seront|fut|fût|furent|fussent] $:D [<start>|,|(] se >devoir être [<start>|,|(] se >pouvoir être <<- /conf/ -2>> ce # Confusion probable. Si vous voulez dire, “ceci”, “cela” ou “ça”, écrivez “c’”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=2440 TEST: {{se}} n’est pas pour cette raison que j’ai abandonné mes études. TEST: grâce à quoi, {{se}} put être fait dans les règles. TEST: {{se}} serait les pires vacances de sa vie TEST: des pans entiers de l’univers — pour reprendre l’expression d’Orwell — se sont d’ores et déjà volatilisés TEST: À la pause, ils se sont tous les deux assis à l’arrière, et j’ai vu progressivement leurs corps se rapprocher. |
︙ | ︙ | |||
18389 18390 18391 18392 18393 18394 18395 | >datte [du|de|des] [>bac|>baptême|>brevet|>calendrier|>carême|>carnaval|>concert|>début|>dépôt|>demande|>dernier|>diffusion|>document|>fermeture|>fin|>jour|>journal|>lancement|>livraison|mise+s|>mariage|>message|>mort|>naissance|>parution|>pentecôte|>péremption|>post|>prélèvement|>premier|>pris|>prochain|>publication|>ramadan|>rapport|>réception|>référendum|>règlement|>retraite|>réunion|>séminaire|>show|>sortie|>spectacle|>terme|>tirage|>tournage|>trajet|>vente|>virement|>vol|>vote|>voyage|>lundi|>mardi|>mercredi|>jeudi|>vendredi|>samedi|>dimanche|congrès|décès|permis|procès] >datte d’ [accouchement|actualisation|achat|adhésion|anniversaire|apparition|échéance|édition|émission|engagement|entrée|envoi|examen|exécution|expédition|expiration|immatriculation|imputation|inscription|origine|ouverture|ovulation|aujourd’hui|Halloween] >datte de l’ [accouchement|actualisation|achat|adhésion|anniversaire|apparition|échéance|édition|émission|engagement|entrée|envoi|examen|exécution|expédition|expiration|immatriculation|imputation|inscription|origine|ouverture|ovulation] >datte du /NUM [janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre] <<- /conf/ -1>> =\1.replace("tt", "t").replace("TT", "T") # Confusion probable. La datte est un fruit. Pour évoquer un jour dans l’année, écrivez “date”.|https://fr.wiktionary.org/wiki/date >dernier en >datte | | | 18459 18460 18461 18462 18463 18464 18465 18466 18467 18468 18469 18470 18471 18472 18473 | >datte [du|de|des] [>bac|>baptême|>brevet|>calendrier|>carême|>carnaval|>concert|>début|>dépôt|>demande|>dernier|>diffusion|>document|>fermeture|>fin|>jour|>journal|>lancement|>livraison|mise+s|>mariage|>message|>mort|>naissance|>parution|>pentecôte|>péremption|>post|>prélèvement|>premier|>pris|>prochain|>publication|>ramadan|>rapport|>réception|>référendum|>règlement|>retraite|>réunion|>séminaire|>show|>sortie|>spectacle|>terme|>tirage|>tournage|>trajet|>vente|>virement|>vol|>vote|>voyage|>lundi|>mardi|>mercredi|>jeudi|>vendredi|>samedi|>dimanche|congrès|décès|permis|procès] >datte d’ [accouchement|actualisation|achat|adhésion|anniversaire|apparition|échéance|édition|émission|engagement|entrée|envoi|examen|exécution|expédition|expiration|immatriculation|imputation|inscription|origine|ouverture|ovulation|aujourd’hui|Halloween] >datte de l’ [accouchement|actualisation|achat|adhésion|anniversaire|apparition|échéance|édition|émission|engagement|entrée|envoi|examen|exécution|expédition|expiration|immatriculation|imputation|inscription|origine|ouverture|ovulation] >datte du /NUM [janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre] <<- /conf/ -1>> =\1.replace("tt", "t").replace("TT", "T") # Confusion probable. La datte est un fruit. Pour évoquer un jour dans l’année, écrivez “date”.|https://fr.wiktionary.org/wiki/date >dernier en >datte <<- /conf/ -3>> date # Confusion probable. La datte est un fruit. Pour évoquer un jour dans l’année, écrivez “date”.|https://fr.wiktionary.org/wiki/date TEST: il va faire un cake aux {{dates}}. TEST: elle a fait de la confiture de {{dates}} TEST: Des {{dates}} fraîches. TEST: des {{dates}} dénoyautées. TEST: une {{date}} muscade TEST: c’est la dernière en {{datte}}. |
︙ | ︙ | |||
19830 19831 19832 19833 19834 19835 19836 | il >être [tant|>tan] [de|d’] [nous|vous] [la|le|les|l’] il >être [tant|>tan] [de|d’] [la|le|les|lui|nous|vous|leur|l’] $:Y il >être [tant|>tan] [de|d’] $:Y <<- /conf/ -3>> temps # Confusion. Si vous voulez dire “c’est le moment de”, écrivez “temps”.|https://fr.wiktionary.org/wiki/il_est_temps [>avoir|>prendre|<start>|,|(] du bon [tant|>tan] c’ >être [le|l’] bon ?vieux¿ [tant|>tan] | > | | 19900 19901 19902 19903 19904 19905 19906 19907 19908 19909 19910 19911 19912 19913 19914 19915 | il >être [tant|>tan] [de|d’] [nous|vous] [la|le|les|l’] il >être [tant|>tan] [de|d’] [la|le|les|lui|nous|vous|leur|l’] $:Y il >être [tant|>tan] [de|d’] $:Y <<- /conf/ -3>> temps # Confusion. Si vous voulez dire “c’est le moment de”, écrivez “temps”.|https://fr.wiktionary.org/wiki/il_est_temps [>avoir|>prendre|<start>|,|(] du bon [tant|>tan] c’ >être [le|l’] bon ?vieux¿ [tant|>tan] au bon vieux [tant|>tan] <<- /conf/ --1>> temps # Confusion. Pour parler d’un période heureuse, écrivez “temps”.|https://fr.wiktionary.org/wiki/temps TEST: en {{tan}} que meneuse intrépide, elle a toujours fait preuve d’une grande imagination. TEST: il est bien évidemment {{tant}} d’en finir avec ça. TEST: c’était le bon {{tan}} TEST: elle sait prendre du bon {{tant}} |
︙ | ︙ | |||
25339 25340 25341 25342 25343 25344 25345 25346 25347 25348 25349 25350 25351 25352 | TEST: Ses « chiens » {{coure}} sur ma pelouse. TEST: mes filles {{passe}} ce matin TEST: vos filles {{passes}} ce matin TEST: ces travaux qui {{demande}} tant d’efforts. TEST: vos questions ne {{réclame}} aucune réflexion. TEST: Ces attaques à main armée {{donne}} la chair de poule. TEST: Ces marchands {{passe}} leur temps à se quereller. TEST: le lien entre les agences de renseignement et ces mêmes entreprises pouvait reposer sur des activités de surveillance à proprement parler. TEST: trier les cons et les connes expose à un violent coup de boomerang TEST: Tu penses que quelqu’un qui frappe sa femme et ses enfants est un bon père ? __conj_det_plur_nom_confusion__ les @:[NA].*:[pi] @:V¬:(?:3p|P|Y|G|M|A.*:e:[pi]) | > | 25410 25411 25412 25413 25414 25415 25416 25417 25418 25419 25420 25421 25422 25423 25424 | TEST: Ses « chiens » {{coure}} sur ma pelouse. TEST: mes filles {{passe}} ce matin TEST: vos filles {{passes}} ce matin TEST: ces travaux qui {{demande}} tant d’efforts. TEST: vos questions ne {{réclame}} aucune réflexion. TEST: Ces attaques à main armée {{donne}} la chair de poule. TEST: Ces marchands {{passe}} leur temps à se quereller. TEST: maints hommes {{oublie}} leurs origines pour mieux se construire un passé glorieux TEST: le lien entre les agences de renseignement et ces mêmes entreprises pouvait reposer sur des activités de surveillance à proprement parler. TEST: trier les cons et les connes expose à un violent coup de boomerang TEST: Tu penses que quelqu’un qui frappe sa femme et ses enfants est un bon père ? __conj_det_plur_nom_confusion__ les @:[NA].*:[pi] @:V¬:(?:3p|P|Y|G|M|A.*:e:[pi]) |
︙ | ︙ |
Modified gc_lang/fr/webext/content_scripts/panel_gc.css from [9864829a36] to [9a73dd19f8].
︙ | ︙ | |||
100 101 102 103 104 105 106 107 108 109 110 111 112 113 | div#grammalecte_tooltip_message_block { margin: 0; padding: 5px 10px 5px 10px; background-color: hsl(210, 50%, 30%); color: hsl(210, 50%, 96%); } div#grammalecte_tooltip_actions { margin: 0; padding: 7px 10px 5px 10px; background-color: hsl(210, 50%, 30%); color: hsl(210, 50%, 96%); } div#grammalecte_tooltip_rule_id { display: none; | > > | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | div#grammalecte_tooltip_message_block { margin: 0; padding: 5px 10px 5px 10px; background-color: hsl(210, 50%, 30%); color: hsl(210, 50%, 96%); } div#grammalecte_tooltip_actions { display: flex; justify-content: space-between; margin: 0; padding: 7px 10px 5px 10px; background-color: hsl(210, 50%, 30%); color: hsl(210, 50%, 96%); } div#grammalecte_tooltip_rule_id { display: none; |
︙ | ︙ | |||
140 141 142 143 144 145 146 | text-decoration: none; } div#grammalecte_tooltip_ignore:hover { background-color: hsl(30, 30%, 50%); color: hsla(0, 0%, 100%, 1); text-shadow: 0 0 3px hsl(30, 30%, 60%); } | | | > > > > > > > > > > > > > > > > > | 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 | text-decoration: none; } div#grammalecte_tooltip_ignore:hover { background-color: hsl(30, 30%, 50%); color: hsla(0, 0%, 100%, 1); text-shadow: 0 0 3px hsl(30, 30%, 60%); } div#grammalecte_tooltip_url { display: inline-block; margin-left: 10px; padding: 1px 5px; background-color: hsl(210, 50%, 50%); color: hsla(210, 0%, 96%, 1); border-radius: 2px; cursor: pointer; font-family: Tahoma, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", sans-serif; font-size: 12px; text-decoration: none; } div#grammalecte_tooltip_url:hover { background-color: hsl(210, 50%, 60%); color: hsla(0, 0%, 100%, 1); text-shadow: 0 0 3px hsl(210, 30%, 60%); } div#grammalecte_tooltip_db_search { display: inline-block; margin-left: 10px; padding: 1px 5px; /*background-color: hsl(210, 50%, 50%);*/ color: hsla(210, 0%, 96%, .1); border-radius: 2px; cursor: pointer; font-family: Tahoma, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", sans-serif; font-size: 12px; text-decoration: none; } div#grammalecte_tooltip_db_search:hover { background-color: hsla(210, 50%, 50%, .1); color: hsla(0, 0%, 100%, .2); text-shadow: 0 0 3px hsla(210, 30%, 60%, .2); } div#grammalecte_tooltip_sugg_title { padding: 0 10px; background-color: hsl(210, 10%, 90%); color: hsl(210, 50%, 30%); font-family: Tahoma, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", sans-serif; font-size: 10px; |
︙ | ︙ |
Modified gc_lang/fr/webext/content_scripts/panel_gc.js from [229ed751b6] to [2282aa660c].
︙ | ︙ | |||
790 791 792 793 794 795 796 | class GrammalecteTooltip { constructor (xParent, xGCPanelContent) { this.xParent = xParent; this.sErrorId = null; | < | | 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 | class GrammalecteTooltip { constructor (xParent, xGCPanelContent) { this.xParent = xParent; this.sErrorId = null; this.xTooltip = oGrammalecte.createNode("div", {id: "grammalecte_tooltip"}); this.xTooltipArrow = oGrammalecte.createNode("img", { id: "grammalecte_tooltip_arrow", src: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwAAADsABataJCQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xNzNun2MAAAAnSURBVChTY/j//z8cq/kW/wdhZDEMSXRFWCVhGKwAmwQyHngFxf8B5fOGYfeFpYoAAAAASUVORK5CYII=", alt: "^", }); // message let xMessageBlock = oGrammalecte.createNode("div", {id: "grammalecte_tooltip_message_block"}); xMessageBlock.appendChild(oGrammalecte.createNode("div", {id: "grammalecte_tooltip_rule_id"})); xMessageBlock.appendChild(oGrammalecte.createNode("div", {id: "grammalecte_tooltip_message", textContent: "Erreur."})); this.xTooltip.appendChild(xMessageBlock); // suggestions this.xTooltip.appendChild(oGrammalecte.createNode("div", {id: "grammalecte_tooltip_sugg_title", textContent: "SUGGESTIONS :"})); this.xTooltipSuggBlock = oGrammalecte.createNode("div", {id: "grammalecte_tooltip_sugg_block"}); this.xTooltip.appendChild(this.xTooltipSuggBlock); // actions let xActions = oGrammalecte.createNode("div", {id: "grammalecte_tooltip_actions"}); xActions.appendChild(oGrammalecte.createNode("div", {id: "grammalecte_tooltip_ignore", textContent: "Ignorer"})); xActions.appendChild(oGrammalecte.createNode("div", {id: "grammalecte_tooltip_url", textContent: "Voulez-vous en savoir plus ?…"}, {url: ""})); xActions.appendChild(oGrammalecte.createNode("div", {id: "grammalecte_tooltip_db_search", textContent: "››"}, {url: ""})); this.xTooltip.appendChild(xActions); // add tooltip to the page xGCPanelContent.appendChild(this.xTooltip); xGCPanelContent.appendChild(this.xTooltipArrow); } show (xParagraph, sNodeErrorId) { // err |
︙ | ︙ | |||
833 834 835 836 837 838 839 | this.xTooltipArrow.style.top = (xNodeErr.offsetTop + 16) + "px"; let nUsefulErrorWidth = ((xNodeErr.offsetLeft + xNodeErr.offsetWidth) > nArrowLimit) ? (nArrowLimit - xNodeErr.offsetLeft) : xNodeErr.offsetWidth; this.xTooltipArrow.style.left = (xNodeErr.offsetLeft + Math.floor((nUsefulErrorWidth / 2)) - 4) + "px"; // 4 is half the width of the arrow. this.xTooltip.style.top = (xNodeErr.offsetTop + 20) + "px"; this.xTooltip.style.left = (xNodeErr.offsetLeft > nTooltipLeftLimit) ? nTooltipLeftLimit + "px" : xNodeErr.offsetLeft + "px"; if (xNodeErr.dataset.error_type === "grammar") { // grammar error | < < < > < | | < < < < < < < | 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 | this.xTooltipArrow.style.top = (xNodeErr.offsetTop + 16) + "px"; let nUsefulErrorWidth = ((xNodeErr.offsetLeft + xNodeErr.offsetWidth) > nArrowLimit) ? (nArrowLimit - xNodeErr.offsetLeft) : xNodeErr.offsetWidth; this.xTooltipArrow.style.left = (xNodeErr.offsetLeft + Math.floor((nUsefulErrorWidth / 2)) - 4) + "px"; // 4 is half the width of the arrow. this.xTooltip.style.top = (xNodeErr.offsetTop + 20) + "px"; this.xTooltip.style.left = (xNodeErr.offsetLeft > nTooltipLeftLimit) ? nTooltipLeftLimit + "px" : xNodeErr.offsetLeft + "px"; if (xNodeErr.dataset.error_type === "grammar") { // grammar error if (xNodeErr.dataset.gc_message.includes(" ##")) { // display rule id let n = xNodeErr.dataset.gc_message.indexOf(" ##"); this.xParent.getElementById("grammalecte_tooltip_message").textContent = xNodeErr.dataset.gc_message.slice(0, n); this.xParent.getElementById("grammalecte_tooltip_rule_id").textContent = "Règle : " + xNodeErr.dataset.gc_message.slice(n+2); this.xParent.getElementById("grammalecte_tooltip_rule_id").style.display = "block"; } else { this.xParent.getElementById("grammalecte_tooltip_message").textContent = xNodeErr.dataset.gc_message; this.xParent.getElementById("grammalecte_tooltip_rule_id").style.display = "none"; } if (xNodeErr.dataset.gc_url != "") { this.xParent.getElementById("grammalecte_tooltip_url").dataset.url = xNodeErr.dataset.gc_url; this.xParent.getElementById("grammalecte_tooltip_url").style.display = "inline"; } else { this.xParent.getElementById("grammalecte_tooltip_url").dataset.url = ""; this.xParent.getElementById("grammalecte_tooltip_url").style.display = "none"; } this.xParent.getElementById("grammalecte_tooltip_db_search").style.display = "none"; this.xParent.getElementById("grammalecte_tooltip_ignore").dataset.error_id = xNodeErr.dataset.error_id; let iSugg = 0; this.clearSuggestionBlock(); if (xNodeErr.dataset.suggestions.length > 0) { for (let sSugg of xNodeErr.dataset.suggestions.split("|")) { this.xTooltipSuggBlock.appendChild(this._createSuggestion(xNodeErr.dataset.error_id, 0, iSugg, sSugg)); this.xTooltipSuggBlock.appendChild(document.createTextNode(" ")); iSugg += 1; } } else { this.xTooltipSuggBlock.textContent = "Aucune."; } } if (xNodeErr.dataset.error_type === "spelling") { // spelling mistake this.xParent.getElementById("grammalecte_tooltip_message").textContent = "Mot inconnu du dictionnaire."; this.xParent.getElementById("grammalecte_tooltip_ignore").dataset.error_id = xNodeErr.dataset.error_id; this.xParent.getElementById("grammalecte_tooltip_rule_id").style.display = "none"; this.xParent.getElementById("grammalecte_tooltip_url").dataset.url = ""; this.xParent.getElementById("grammalecte_tooltip_url").style.display = "none"; this.xParent.getElementById("grammalecte_tooltip_db_search").style.display = "inline-block"; this.xParent.getElementById("grammalecte_tooltip_db_search").dataset.url = "https://grammalecte.net/dictionary.php?prj=fr&lemma="+xNodeErr.textContent; this.clearSuggestionBlock(); this.xTooltipSuggBlock.textContent = "Recherche de graphies possibles…"; oGrammalecteBackgroundPort.getSpellSuggestions(xNodeErr.textContent, "__GrammalectePanel__", xNodeErr.dataset.error_id); } this.xTooltipArrow.style.display = "block"; this.xTooltip.style.display = "block"; } catch (e) { showError(e); } } clearSuggestionBlock () { while (this.xTooltipSuggBlock.firstChild) { this.xTooltipSuggBlock.removeChild(this.xTooltipSuggBlock.firstChild); } } hide () { this.xTooltipArrow.style.display = "none"; this.xTooltip.style.display = "none"; } _createSuggestion (sErrorId, iSuggBlock, iSugg, sSugg) { let xNodeSugg = document.createElement("div"); |
︙ | ︙ |