Overview
Comment: | merge trunk |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | rg |
Files: | files | file ages | folders |
SHA3-256: |
168628b7aeb3f1939748db46675f6be0 |
User & Date: | olr on 2018-06-13 05:46:21 |
Other Links: | branch diff | manifest | tags |
Context
2018-06-13
| ||
06:01 | [build] graph builder: add some decoration check-in: 291571d101 user: olr tags: build, rg | |
05:46 | merge trunk check-in: 168628b7ae user: olr tags: rg | |
05:39 | [fr] merge rules in one file check-in: 6fb93b7388 user: olr tags: fr, rg | |
2018-06-11
| ||
18:27 | [fr] faux positifs: en x secondes check-in: 86f910ec5e user: olr tags: trunk, fr | |
Changes
Modified gc_lang/fr/data/phonet_simil.txt from [5477801967] to [3c86c71c52].
︙ | ︙ | |||
115 116 117 118 119 120 121 122 123 124 125 126 127 128 | camp camps quand quant khan khans cache caches cachent cash cachet cachets cacher cadi cadis kadi kadis caddie caddies caddy caddys cadran cadrans cadrant caftan caftans cafetan cafetans caftant cahot cahots chaos cane canes canne cannes Cannes cantique cantiques quantique quantiques cap caps cape capes car cars carre carres carrent quart quarts caret carets carré carrés carrais carrait carraient carrez carné carnée carnés carnées carnet carnets carte cartes cartent kart karts | > | 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | camp camps quand quant khan khans cache caches cachent cash cachet cachets cacher cadi cadis kadi kadis caddie caddies caddy caddys cadran cadrans cadrant caftan caftans cafetan cafetans caftant cahot cahots chaos caméra caméras camera cameras cane canes canne cannes Cannes cantique cantiques quantique quantiques cap caps cape capes car cars carre carres carrent quart quarts caret carets carré carrés carrais carrait carraient carrez carné carnée carnés carnées carnet carnets carte cartes cartent kart karts |
︙ | ︙ |
Modified gc_lang/fr/rules.grx from [3e19014a74] to [7a892f877c].
︙ | ︙ | |||
385 386 387 388 389 390 391 | __<i>(p_email)__ \w[\w.-]*@\w[\w.-]*\w[.]\w+ <<- ~>> * # URL __<i>(p_URL)__ https?://[\w./?&!%=+*"'@$#-]+ <<- ~>> * __<i](p_URL2)__ | | > > > > | 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 | __<i>(p_email)__ \w[\w.-]*@\w[\w.-]*\w[.]\w+ <<- ~>> * # URL __<i>(p_URL)__ https?://[\w./?&!%=+*"'@$#-]+ <<- ~>> * __<i](p_URL2)__ ((?:{w_1}[.])*)({w_2})([.](?:com|net|org|info|fr|ca|be|ch|i[ot]|co[.]uk|tk|es|jp|zh|ru|us|nl|xyz)) @@0,**,$ <<- ~1>> * <<- ~2>> =\2.capitalize() <<- =>> define(\2, [":MP:e:i"]) <<- ~3>> * # Numéro de chapitre __<i>(p_chapitre)__ ^\d+[.][\d.-]* <<- ~>> * # Numéro suivi de plusieurs espaces, considéré comme une numérotation de chapitre __<i>(p_num_chapitre)__ |
︙ | ︙ | |||
733 734 735 736 737 738 739 | !!!! Espaces manquants !! !! __<s>/typo(typo_espace_manquant_après1)__ ({w1})[,:]({w_1}) @@0,$ <<- not \1.isdigit() -2>> " \2" # Il manque un espace. __<s>/typo(typo_espace_manquant_après2)__ | | | | > > | 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 | !!!! Espaces manquants !! !! __<s>/typo(typo_espace_manquant_après1)__ ({w1})[,:]({w_1}) @@0,$ <<- not \1.isdigit() -2>> " \2" # Il manque un espace. __<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.isdigit() and spell(\1)) or after("^’") -1>> " \1" # Il manque un espace. TEST: J’en ai marre,{{ça}} suffit. TEST: elle est délirante.{{Devine}} ce qu’elle a dit. TEST: Voilà,{{il}} manque un espace. ->> " il" TEST: Dernier essai.{{Voilà}}, c’est ça. ->> " Voilà" TEST: muni de lunettes protectrices et.{{d}}’un casque. TEST: espace:{{manquant}} ->> " manquant" TEST: espace{{;}}{{manquant}} TEST: espace ;{{manquant}} ->> " manquant" TEST: espace{{?}}{{manquant}} TEST: espace{{!}}{{manquant}} TEST: espace.{{Manquant}} ->> " Manquant" TEST: qui ont refuse.{{de}} se sauver ->> " de" TEST: pic.twitter.com/PICNAME !! !! !!!! Points !! !! |
︙ | ︙ | |||
1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 | ->> \1-\2 # Il manque probablement un trait d’union. TEST: ce sont des {{lève tard}}. ### Tri 1 __[i]/tu(tu_à_tout_va)__ [àa] tout vas? <<- ->> à tout-va # Il manque un trait d’union. __[i]/tu(tu_aller_retour)__ allers? retours? <<- ->> =\0.replace(" ", "-") # Il manque un trait d’union. __[i]/tu(tu_arc_en_ciel)__ arcs? en ciel <<- ->> =\0.replace(" ", "-") # Il manque les traits d’union. __[i]/tu(tu_après_demain)__ après demain <<- ->> après-demain # Il manque un trait d’union. __[i]/tu(tu_au_préposition)__ au (delà|dehors|desso?us|devant) @@$ <<- ->> au-\1 # Il manque un trait d’union. __[i]/tu(tu_avant_hier)__ avant hier <<- ->> avant-hier # Il manque un trait d’union. __[i]/tu(tu_bouche_à_oreille_bouche)__ bouche à (?:bouche|oreilles?) <<- morph(word(-1), ":D", False) ->> =\0.replace(" ", "-") # Il manque les traits d’union. __[i]/tu(tu_c_est_à_dire)__ c’est [àa] dire <<- ->> c’est-à-dire # Il manque les traits d’union. | > | 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 | ->> \1-\2 # Il manque probablement un trait d’union. TEST: ce sont des {{lève tard}}. ### Tri 1 __[i]/tu(tu_à_tout_va)__ [àa] tout vas? <<- ->> à tout-va # Il manque un trait d’union. __[i]/tu(à_la_va_vite)__ [àa] la vas? vite <<- ->> à la va-vite # Il manque un trait d’union. __[i]/tu(tu_aller_retour)__ allers? retours? <<- ->> =\0.replace(" ", "-") # Il manque un trait d’union. __[i]/tu(tu_arc_en_ciel)__ arcs? en ciel <<- ->> =\0.replace(" ", "-") # Il manque les traits d’union. __[i]/tu(tu_après_demain)__ après demain <<- ->> après-demain # Il manque un trait d’union. __[i]/tu(tu_au_préposition)__ au (delà|dehors|desso?us|devant) @@$ <<- ->> au-\1 # Il manque un trait d’union. __[i]/tu(tu_avant_hier)__ avant hier <<- ->> avant-hier # Il manque un trait d’union. __[i]/tu(tu_bouche_à_oreille_bouche)__ bouche à (?:bouche|oreilles?) <<- morph(word(-1), ":D", False) ->> =\0.replace(" ", "-") # Il manque les traits d’union. __[i]/tu(tu_c_est_à_dire)__ c’est [àa] dire <<- ->> c’est-à-dire # Il manque les traits d’union. |
︙ | ︙ | |||
1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 | __[i]/tu(tu_sous_jacent)__ sous (jacente?s?) @@$ <<- ->> sous-\1 # Il manque un trait d’union. # sur-mesures __[i]/tu(tu_vice_président_roi)__ vice (présidente?s?|rois?) @@$ <<- ->> vice-\1 # Il manque un trait d’union. __[i]/tu(tu_vis_à_vis)__ vis [àa] vis <<- ->> vis-à-vis # Il manque les traits d’union. __[i]/tu(tu_week_end)__ week (ends?) @@$ <<- ->> week-\1 # Il manque un trait d’union. TEST: Ils font des tests {{à tout va}} TEST: marre de faire des {{allers retours}} TEST: {{le}} {{bouche à oreille}} TEST: à ce {{moment là}} ->> moment-là TEST: une {{plus value}} ->> plus-value TEST: Il est {{en-dessous}} de tout. ->> en dessous TEST: Ils sont {{en-deçà}} de tout ->> en deçà TEST: {{Là bas}}. ->> Là-bas | > | 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 | __[i]/tu(tu_sous_jacent)__ sous (jacente?s?) @@$ <<- ->> sous-\1 # Il manque un trait d’union. # sur-mesures __[i]/tu(tu_vice_président_roi)__ vice (présidente?s?|rois?) @@$ <<- ->> vice-\1 # Il manque un trait d’union. __[i]/tu(tu_vis_à_vis)__ vis [àa] vis <<- ->> vis-à-vis # Il manque les traits d’union. __[i]/tu(tu_week_end)__ week (ends?) @@$ <<- ->> week-\1 # Il manque un trait d’union. TEST: Ils font des tests {{à tout va}} TEST: on a fait {{à la va vite}}… TEST: marre de faire des {{allers retours}} TEST: {{le}} {{bouche à oreille}} TEST: à ce {{moment là}} ->> moment-là TEST: une {{plus value}} ->> plus-value TEST: Il est {{en-dessous}} de tout. ->> en dessous TEST: Ils sont {{en-deçà}} de tout ->> en deçà TEST: {{Là bas}}. ->> Là-bas |
︙ | ︙ | |||
3111 3112 3113 3114 3115 3116 3117 | TEST: Les écrits de d’Alembert. #### Articles et prépositions + verbes __[i]/conf(conf_à_le_la_les_leur)__ à l(?:es? +|eurs? +|a +|’)({w_3}) @@$ | | > | 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 | TEST: Les écrits de d’Alembert. #### Articles et prépositions + verbes __[i]/conf(conf_à_le_la_les_leur)__ à l(?:es? +|eurs? +|a +|’)({w_3}) @@$ <<- morphex(\1, ":", ":[GNAWMBYŴ]") -1>> =suggSimil(\1, ":[NA]", True) # Incohérence : après “à”, on devrait trouver un groupe nominal. TEST: à leur {{profile}} TEST: une référence à l’astuce de base qui permet d’outrepasser ses droits. TEST: Le mari répète à l’envi qu’il a découvert la France à travers les mots de sa femme. __[s]/conf(conf_en_mts_verbe)__ ([eE]n ([mtsn])(?:e |’))({w_1}) @@0,*,$ <<- morphex(\3, ":[123][sp]", ":[PY]") and not \0.endswith("n’importe") >>> <<- morph(\3, ":3p", False) -3>> =suggVerb(\2, ":P") # Incohérence : « en \1 \2 »… Vouliez-vous écrire le verbe au participe présent ? <<- not (\1.endswith("se ") and morph(\3, ":[NA]", False)) -1>> "\2’en " # Incohérence : vouliez-vous écrire « \2’en » ? |
︙ | ︙ | |||
3474 3475 3476 3477 3478 3479 3480 | <<- morph(\2, ":V2.*:Ip:3s") -2>> =suggVerbPpas(@, ":m:s") # Incohérence : “\1” est une préposition. “\2” est un verbe conjugué. <<- __also__ -1>> a # Confusion probable : “à” est une préposition. Pour le verbe “avoir”, écrivez : <<- __else__ -2>> _ # Incohérence : “\1” est une préposition. “\2” est un verbe conjugué. __[i]/conf(conf_a_à_locutions1)__ (a) (?:nouveau|présent|(?:bonne distance|bord|cause|contre-courant|côté|court|défaut|droite|gauche|l’(?:arrière|autre bout|écart|égard|extérieur|aune|avant|encontre|ins(?:u|tar)|intérieur|opposé)|la (?:portée|suite)|partir|portée|propos|rebours) d(?:es?|u)) @@0 <<- -1>> à # Confusion. Utilisez la préposition “à”. __[s]/conf(conf_a_à_locutions2)__ | | | 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 | <<- morph(\2, ":V2.*:Ip:3s") -2>> =suggVerbPpas(@, ":m:s") # Incohérence : “\1” est une préposition. “\2” est un verbe conjugué. <<- __also__ -1>> a # Confusion probable : “à” est une préposition. Pour le verbe “avoir”, écrivez : <<- __else__ -2>> _ # Incohérence : “\1” est une préposition. “\2” est un verbe conjugué. __[i]/conf(conf_a_à_locutions1)__ (a) (?:nouveau|présent|(?:bonne distance|bord|cause|contre-courant|côté|court|défaut|droite|gauche|l’(?:arrière|autre bout|écart|égard|extérieur|aune|avant|encontre|ins(?:u|tar)|intérieur|opposé)|la (?:portée|suite)|partir|portée|propos|rebours) d(?:es?|u)) @@0 <<- -1>> à # Confusion. Utilisez la préposition “à”. __[s]/conf(conf_a_à_locutions2)__ (a) (?:califourchon|contre(?:cœur|temps)|côté d(?:e|’\w[\w-]+)|demi-mot|nouveau|présent|rebrousse-poil|regret|travers|tout-va|l’(?:heure (?:actuelle|qu il est)|accoutumée|amiable|avance|aven(?:ir|ant)|air libre|aveuglette|emporte-pièce|évidence|exclusion de toute autre chose|improviste|inverse|ordre du jour|œil nu|en croire|un(?:animité| (?:d’entre eux|des leurs)|e (?:d’entre elles|des leurs)))|la (?:bonne franquette|con|dér(?:ive|obée)|diable|fois|limite du supportable|lumière de tout ce(?:ci|la)|mords-moi-le-nœud|papa|petite semaine|pointe du progrès|queue leu leu|rescousse|sauvette|surprise générale|va[ -]vite|virgule près|volée)|partir (?:de (?:demain|là|maintenant|rien)|d’(?:aujourd’hui|hier|ici))|au(?:cun prix|trui|tre chose)|bas co[ûu]t|bâ(?:bord|tons rompus)|beaucoup près|belles dents|bien (?:des égards|y (?:penser|réfléchir|songer))|bon (?:compte|escient|droit)|bout (?:de (?:bras|souffle|forces?)|portant|touchant)|bras (?:ouverts|le corps)|brève échéance|but non lucratif|cause d(?:e (?:ça|[mt]oi|lui|[nv]ous)|’e(?:lles?|ux))|ce (?:compte-là|moment-là|titre)|cet (?:égard|instant(?: précis|))|cette (?:époque(?: de l’année|)|heure de la (?:journée|nuit))|chaque (?:fois|instant)|chaudes larmes|cœur (?:joie|ouvert|perdu)|ciel ouvert|contre-cœur|corps perdu|cou(?:p sûr|per le souffle|rt terme|rte (?:échéance|portée))|couilles rabattues|de nombreuses reprises|des kilomètres à la ronde|dose homéopathique|double (?:titre|tranchant)|durée limitée|en (?:juger par (?:[mts]on|[nv]otre|leur) expérience|perdre (?:haleine|la tête))|faible (?:allure|revenu)|feu et à sang|flanc de (?:colline|montagne)|fleur de peau|géométrie variable|grand(?:-peine|e échelle)|haut risque|hue et à dia|huis clos|intervalles (?:ir|)réguliers|juste (?:raison|titre)|long terme|longue(?: échéance| portée|ur (?:de (?:temps|journée))|d’année)|loyer modéré|main (?:armée|droite|gauche|levée)|maint(?:s égards|es reprises)|marche forcée|merveille|mi-(?:course|distance|temps)|mi(?:di|nuit)(?: pile|)|moindres frais|moyen(?: terme|ne échéance)|mots couverts|ne (?:jamais|pas|rien|guère)|n’en (?:pas douter|point douter|plus finir)|outrance|parler franc|part (?:entière|ça|ce(?:la|ci))|partir de là|part(?:ir de rien|s égales)|pas de (?:géant|loup|tortue|velours)|personne en danger|perte de vue|petit(?: feu|e (?:dose|échelle))|peu (?:de choses? |)près|pieds joints|pile ou face|plat(?: ventre|e couture)|plein(?: (?:régime|temps|nez)|s poumons)|plus (?:forte raison|d’un titre)|point nommé|portée de main|première vue|prix (?:cassé|modique)s?|proprement parler|qui (?:mieux mieux|que ce soit|de droit)|quelque distance|quelques exceptions près|ras bords?|rude épreuve|tel point|temps (?:plein|partiel|complet)|tête reposée|tire[ -]d’aile|titre (?:conservatoire|d’exemple|indicatif|informatif|grâcieux|personnel|posthume)|tombeau ouvert|tort (?:ou à raison|et à travers)|tour de (?:bras|rôle)|tous (?:crins|points de vue)|tout(?: (?:âge|bout de champ|crin|instant|jamais|le (?:moins|monde)|moment|point de vue|prix|un chacun)|e (?:allure|bride|épreuve|force|heure|vitesse|volée))|toutes (?:fins utiles|jambes)|tribord|tu et à toi|un moment donné|usage interne|visage découvert|vive allure|voix (?:haute|basse)|vol d’oiseau|vrai dire|vue d’œil|y (?:regarder de plus près|réfléchir)) @@0 <<- not before(r"(?i)[ln]’$|(?<!-)\b(?:il|elle|on|y|n’en) +$") -1>> à # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0 __[s]/conf(conf_a_à_locutions3)__ (a) (?:confesse|mi(?:di|nuit)|r(?:allonge|eculons|enverse|isque)|tâtons|vélo|la (?:manque|ramasse|re(?:dresse|nverse))) @@0 <<- not before(r"(?i)(?:\bque? |[ln]’$|(?<!-)\b(?:il|elle|on|y|n’en) +$)") -1>> à # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0 __[s]/conf(conf_a_à_locutions4)__ |
︙ | ︙ | |||
3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 | TEST: Attention {{a}} ne pas la réveiller. TEST: C’est {{à peu prêt}} la même chose. TEST: ils viennent nous attaquer {{a}} tout bout de champ TEST: par rapport {{a}} eux, je me sens parfois dépassé TEST: par rapport {{a}} ces hommes-là, nous manquons d’expérience TEST: Ce que cet homme à {{devient}} aujourd’hui notre problème TEST: ce que cette personne, dans son esprit trouble et vindicatif, {{à}} aux hommes à dire, nul ne le sait. TEST: Je tenais à le lui faire savoir. TEST: il va falloir songer à les leur donner TEST: le coût est estimé à au moins 1000 milliards de dollars TEST: elle à qui nous avons donné notre cœur et pour laquelle nous avons tout tenté pour la faire aimer de nos concitoyens. TEST: jusqu’à parfois se mettre en danger TEST: les méthodes de l’à peu près ne suffisent pas. | > | 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 | TEST: Attention {{a}} ne pas la réveiller. TEST: C’est {{à peu prêt}} la même chose. TEST: ils viennent nous attaquer {{a}} tout bout de champ TEST: par rapport {{a}} eux, je me sens parfois dépassé TEST: par rapport {{a}} ces hommes-là, nous manquons d’expérience TEST: Ce que cet homme à {{devient}} aujourd’hui notre problème TEST: ce que cette personne, dans son esprit trouble et vindicatif, {{à}} aux hommes à dire, nul ne le sait. TEST: on fait ça {{a}} la va-vite. TEST: Je tenais à le lui faire savoir. TEST: il va falloir songer à les leur donner TEST: le coût est estimé à au moins 1000 milliards de dollars TEST: elle à qui nous avons donné notre cœur et pour laquelle nous avons tout tenté pour la faire aimer de nos concitoyens. TEST: jusqu’à parfois se mettre en danger TEST: les méthodes de l’à peu près ne suffisent pas. |
︙ | ︙ | |||
3835 3836 3837 3838 3839 3840 3841 | (?:peu|plein|beaucoup|trop|plus|moins|assez|suffisamment|tellement|obtentions?|régimes?) (davantage) @@$ <<- -1>> d’avantages # Confusion probable : “davantage” signifie “plus” ; un “avantage” signifie “faveur”, “bénéfice”, “profit”… __[i]/conf(conf_être_davantage_ppas)__ ({etre}) (d’avantages?) ({w_2}) @@0,w,$ <<- morph(\1, ":V0e", False) and morphex(\3, ":[NAQ]", ":G") -2>> davantage # Confusion possible : “davantage” signifie “plus” ; un “avantage” signifie “faveur”, “bénéfice”, “profit”… __[i]/conf(conf_davantage1)__ ({w1}) (d’avantages?) @@0,$ | | | > | 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 | (?:peu|plein|beaucoup|trop|plus|moins|assez|suffisamment|tellement|obtentions?|régimes?) (davantage) @@$ <<- -1>> d’avantages # Confusion probable : “davantage” signifie “plus” ; un “avantage” signifie “faveur”, “bénéfice”, “profit”… __[i]/conf(conf_être_davantage_ppas)__ ({etre}) (d’avantages?) ({w_2}) @@0,w,$ <<- morph(\1, ":V0e", False) and morphex(\3, ":[NAQ]", ":G") -2>> davantage # Confusion possible : “davantage” signifie “plus” ; un “avantage” signifie “faveur”, “bénéfice”, “profit”… __[i]/conf(conf_davantage1)__ ({w1}) (d’avantages?) @@0,$ <<- morphex(\1, ":V", ":Q|>(?:profiter|bénéficier|nombre)/") and not morph(word(1), ">(?:financi[eè]re?|pécuni(?:er|aire)|sociaux)s?/", False, False) -2>> davantage # Confusion probable : “davantage” signifie “plus” ; un “avantage” signifie “faveur”, “bénéfice”, “profit”… __[i]/conf(conf_davantage2)__ ({w_1})-(?:je|tu|ils?|elles?|[nv]ous|on) +(d’avantages?) @@0,$ <<- not morph(\1, ">(?:profiter|bénéficier)/", False) and not morph(word(1), ">(?:financi[eè]re?|pécuni(?:er|aire)|sociaux)s?/", False, False) -2>> davantage # Confusion probable : “davantage” signifie “plus” ; un “avantage” signifie “faveur”, “bénéfice”, “profit”… __[i>/conf(conf_davantage3)__ (d’avantages?) d(?:e +|’) @@0 <<- -1>> davantage # Confusion possible : “davantage” signifie “plus” ; un “avantage” signifie “faveur”, “bénéfice”, “profit”… TEST: ils ont peu {{davantage}} à vivre ici. TEST: Ils s’exerceront {{d’avantages}}. TEST: {{d’avantage}} de monde de jour en jour TEST: Viens-tu {{d’avantage}} à la maison TEST: {{d’avantage}} de monde viendra TEST: ils sont {{d’avantages}} perdus que les autres. TEST: tout ce qu’il apporte d’avantages pécuniaires. TEST: un certain nombre d’avantages sociaux. # différend / différent __[i]/conf(conf_différent)__ différends? <<- morph(word(-1), ":W", False, False) ->> =\0.replace("end", "ent") # Confusion probable : “un différend” est un désaccord. Pour l’adjectif qualifiant une différence, écrivez : __[i]/conf(conf_différend1)__ |
︙ | ︙ | |||
4281 4282 4283 4284 4285 4286 4287 | TEST: {{qu’elle}} emmerdeuse. __[i]/conf(conf_qu_elle_verbe)__ (quelles?) +({w_1}) @@0,$ <<- \2.islower() and (morphex(\2, ":V|>(?:ne?|me?|te?|se?|[nv]ous|l(?:e|a|es|ui|leur|)|en|y)/", ":[NA].*:[fe]|>(?:plus|moins)") or \2 == "t" or \2 == "s") and not (morph(\2, ">(?:pouvoir|devoir|en)/", False) and morph(word(1), ":V0e", False)) >>> | > | | > | 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 | TEST: {{qu’elle}} emmerdeuse. __[i]/conf(conf_qu_elle_verbe)__ (quelles?) +({w_1}) @@0,$ <<- \2.islower() and (morphex(\2, ":V|>(?:ne?|me?|te?|se?|[nv]ous|l(?:e|a|es|ui|leur|)|en|y)/", ":[NA].*:[fe]|>(?:plus|moins)") or \2 == "t" or \2 == "s") and not (morph(\2, ">(?:pouvoir|devoir|en)/", False) and morph(word(1), ":V0e", False)) >>> <<- \1.endswith("e") and not morph(\2, ":V0e", False) and not (morph(\2, ":V0a", False) and after("^ +été ")) -1>> qu’elle # Confusion. Le sujet “elle” doit être séparée de la conjonction “que”. 1 <<- __else__ and \1.endswith("s") and not morph(\2, ":V0e", False) and not (morph(\2, ":V0a", False) and after("^ +été ")) -1>> qu’elles # Confusion. Le sujet “elles” doit être séparée de la conjonction “que”. 2 <<- __else__ and morph(\2, ":V0e", False) and morphex(word(1), ":[QA]", ":G", False) >>> <<- \1.endswith("e") -1>> qu’elle # Confusion. Le sujet “elle” doit être séparée de la conjonction “que”. 3 <<- __else__ and \1.endswith("s") -1>> qu’elles # Confusion. Le sujet “elles” doit être séparée de la conjonction “que”. 4 TEST: Je sais {{quelle}} est partie. TEST: {{Quelle}} partit prendre son repas à la cantine, je n’en avais cure. TEST: Il se plaint {{quelle}} ne nous dit rien. |
︙ | ︙ | |||
4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 | TEST: il pense {{quelles}} sont devenues dangereuses. TEST: Quelle est sa passion ? TEST: Quelles sont leurs principales études ? TEST: Quelles en sont les conséquences ? TEST: Quelle plus belle complicité que… TEST: Quelle peut être la date de clôture d’un exercice ? TEST: Quelle doit être la date du mariage ? # savoir / ignorer __[i]/conf(être_pas_sans_savoir)__ ({etre}) pas sans (ignor(?:e[rz]|ée?s?|ai[st])) @@0,$ <<- morph(\1, ":V0e", False) -2>> savoir # Confusion : vous écrivez l’inverse de ce que vous voulez dire.|http://fr.wiktionary.org/wiki/vous_n%E2%80%99%C3%AAtes_pas_sans_savoir | > | 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 | TEST: il pense {{quelles}} sont devenues dangereuses. TEST: Quelle est sa passion ? TEST: Quelles sont leurs principales études ? TEST: Quelles en sont les conséquences ? TEST: Quelle plus belle complicité que… TEST: Quelle peut être la date de clôture d’un exercice ? TEST: Quelle doit être la date du mariage ? TEST: Quelles ont été les annonces faites ? # savoir / ignorer __[i]/conf(être_pas_sans_savoir)__ ({etre}) pas sans (ignor(?:e[rz]|ée?s?|ai[st])) @@0,$ <<- morph(\1, ":V0e", False) -2>> savoir # Confusion : vous écrivez l’inverse de ce que vous voulez dire.|http://fr.wiktionary.org/wiki/vous_n%E2%80%99%C3%AAtes_pas_sans_savoir |
︙ | ︙ | |||
4972 4973 4974 4975 4976 4977 4978 | __[i](p_depuis_tps)__ depuis (\d+ (?:ans|années|mois|semaines|jours|heures|minutes|secondes|)|les années \d\d+) @@$ <<- ~>> * __[i](p_Dieu_en_garde_témoin)__ Dieu (?:[mt]’en (?:garde|soit témoin)|[nv]ous en (?:garde|soit témoin)|l(?:es |’)en garde|l(?:eur|ui) en soit témoin) <<- ~>> * __[i](p_du_moins)__ du moins <<- ~>> _ __[i](p_du_qqch)__ du (?:[xXvViI]+[eᵉ] siècle|bout des lèvres|début à la fin|fond du cœur|jour au lendemain|haut en bas|même (?:acabit|tonneau)|moins,? pas|(?:nord|sud) au (?:nord|sud)|tout au tout) <<- ~>> * __[i](p_demain)__ (?:après-|avant |)demain(?: matin| soir| après-midi|) <<- ~>> * __[i](p_don_Juan)__ (don) Juan @@0 <<- ~1>> * __[i](p_du_même_ordre_coup)__ du même (?:ordre|coup) <<- ~>> * | | | 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 | __[i](p_depuis_tps)__ depuis (\d+ (?:ans|années|mois|semaines|jours|heures|minutes|secondes|)|les années \d\d+) @@$ <<- ~>> * __[i](p_Dieu_en_garde_témoin)__ Dieu (?:[mt]’en (?:garde|soit témoin)|[nv]ous en (?:garde|soit témoin)|l(?:es |’)en garde|l(?:eur|ui) en soit témoin) <<- ~>> * __[i](p_du_moins)__ du moins <<- ~>> _ __[i](p_du_qqch)__ du (?:[xXvViI]+[eᵉ] siècle|bout des lèvres|début à la fin|fond du cœur|jour au lendemain|haut en bas|même (?:acabit|tonneau)|moins,? pas|(?:nord|sud) au (?:nord|sud)|tout au tout) <<- ~>> * __[i](p_demain)__ (?:après-|avant |)demain(?: matin| soir| après-midi|) <<- ~>> * __[i](p_don_Juan)__ (don) Juan @@0 <<- ~1>> * __[i](p_du_même_ordre_coup)__ du même (?:ordre|coup) <<- ~>> * __[i](p_en_nombre_années)__ en \d\d+(?: ans| années| mois| semaines| jours| heures| minutes| secondes|) <<- ~>> * __[i](p_en_cours)__ en cours(?! d[e’]) <<- ~>> * __[i](p_en_pronom)__ en (?:[mt]oi|eux|elles?) <<- ~>> * __[i](p_en_qqch1)__ en (?:aparté|apparence|arrière|avance|avant|cachette|ceci|cela|clair|commun|conséquence|continu|contrepartie|définitive|détail|direct|douce|effet|émoi|filigrane|général|goguette|hâte|majorité|outre|pâmoison|parallèle|partie|particulier|permanence|personne|pratique|prime|privé|principe|priorité|public|réalité|retour|revanche|rien|rogne|route|secret|silence|somme|suspens|théorie|trompe-l’œil|vain|vérité|ville|vitesse) <<- ~>> * __[i](p_en_qqch2)__ en (?:aucun(?: cas|e (?:circonstance|façon|manière))|bon(?: état|ne (?:compagnie|et due forme|posture|santé(?: physique| mentale|)|voie))|bout de course|cas d(?:e (?:besoin|doute)|’urgence)|chacune? d(?:e [nv]ous|’(?:eux|elles))|chair et en os|chute libre|comparution immédiate|connaissance de cause|coupe réglée|cours de route|d’autres (?:circonstances|termes|temps)|de telles circonstances|début d(?:e (?:journée|matinée|soirée)|’après-midi)|définitive|dehors de (?:tout|)(?:ça|cela|ceci)|dents de scie|dernier (?:lieu|recours|ressort)|désespoir de cause|détention provisoire|direction d(?:u (?:nord|sud)(?:-est|-ouest|)|e l’(?:est|ouest))|état (?:de (?:choc(?: circulatoire|)|marche)|d’ébriété(?: avancée|))|excellent état|file indienne|fin d(?:e (?:compte|journée|matinée|soirée)|’après-midi)|forte (?:baisse|hausse)|gage de bonne foi|garde à vue(?: prolongée|)|grand(?: nombre|e (?:difficulté|majorité|partie|pompe))|haut lieu|l’occurrence|lieu sûr|ligne de (?:compte|mire)|mains propres|mauvais(?: état|e (?:posture|santé))|même temps|milieu d(?:e (?:journée|matinée|soirée)|’après-midi)|nombre (?:plus que |)suffisant|partant de zéro|plein(?: air| cœur| jour|e (?:gueule|figure|forme|poire|nuit|tronche))|perte de vitesse|peu de temps|piteux état|point d(?:e mire|’orgue)|position de (?:force|faiblesse)|premi(?:er lieu|ère (?:instance|ligne))|pure perte|quantité (?:plus que |)suffisante|quelque sorte|queue de peloton|rangs serrés|rase campagne|règle générale|roue libre|sens inverse|si peu de temps|sous-main|tête à tête|temps (?:et en heure|normal|opportun|ordinaire|utile|voulu)|termes choisis|toile de fond|tous (?:les cas|sens)|tout (?:bien tout honneur|cas|genre|lieu|et pour tout|état de cause|premier lieu|sens|temps)|toute(?: (?:bonne foi|circonstance|connaissance de cause|confiance|discrétion|franchise|hâte|impartialité|impunité|innocence|légalité|liberté|logique|sécurité|simplicité)|s circonstances)|un (?:clin d’œil|rien de temps)|une autre occasion|vase clos|voie de développement|y réfléchissant bien) <<- ~>> * __[i](p_en_mois_dernier)__ en (?:janvier|février|mars|avril|mai|jui(?:n|llet)|ao[ûu]t|septembre|octobre|novembre|décembre) dernier <<- ~>> * __[i](p_en_dat_mas_qqch)__ en (?:[mts]on|leur|[nv]otre) (?:âme et conscience|for intérieur|nom propre) <<- ~>> * __[i](p_en_ce_qqch)__ en ce(?: (?:moment|temps-là|qui (?:[mt]e|l(?:es?|a)|[nv]ous) concern(?:e|ait))|t instant) <<- ~>> * |
︙ | ︙ | |||
5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 | __[i](p_une_qqch)__ une (?:à une|autre fois|bonne fois pour toutes|dernière fois|fois(?: pour toutes| de plus| n’est pas coutume)) <<- ~>> * __[i](p_une_fois)__ une fois <<- ~>> _ __[i](p_urbi_et_orbi)__ urbi et orbi <<- ~>> * __[i](p_v_divers)__ v(?:aille que vaille|entre à terre|ers nulle part) <<- ~>> * TEST: ils vont et viennent, toujours {{cotes a cotes}}… TEST: Nous irons {{tours à tours}} chercher du bois. # je / tu / il / elles / nous / vous / ils / elles __[i](p_je_vous_en_prie)__ je (?:t’en|vous en) (?:prie|supplie) <<- ~>> * __[i](p_nous_vous_en_prions)__ nous (?:t’en|vous en) (?:prions|supplions) <<- ~>> * # mot-là | > | 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 | __[i](p_une_qqch)__ une (?:à une|autre fois|bonne fois pour toutes|dernière fois|fois(?: pour toutes| de plus| n’est pas coutume)) <<- ~>> * __[i](p_une_fois)__ une fois <<- ~>> _ __[i](p_urbi_et_orbi)__ urbi et orbi <<- ~>> * __[i](p_v_divers)__ v(?:aille que vaille|entre à terre|ers nulle part) <<- ~>> * TEST: ils vont et viennent, toujours {{cotes a cotes}}… TEST: Nous irons {{tours à tours}} chercher du bois. TEST: Ma thèse en 180 secondes. # je / tu / il / elles / nous / vous / ils / elles __[i](p_je_vous_en_prie)__ je (?:t’en|vous en) (?:prie|supplie) <<- ~>> * __[i](p_nous_vous_en_prions)__ nous (?:t’en|vous en) (?:prions|supplions) <<- ~>> * # mot-là |
︙ | ︙ | |||
5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 | <<- ~1>> * __[i](loc_cuillère)__ cuillères? +(([àa]) (?:café|soupe)) @@$,w <<- \2 == "a" -2>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. <<- ~1>> * __[i](p_délai_de)__ délais? (d’attente|de (?:carence|connexion|prescription|préavis|rétraction|rigueur)) @@$ <<- ~1>> * __[i](p_demande_d_asile)__ demandes? (d’asile) @@$ <<- ~1>> * __[i](p_diner_aux_chandelles)__ d[îi]ners? (aux chandelles) @@$ <<- ~1>> * __[i](p_digne_de)__ dignes? (de (?:confiance|foi|ce nom)) @@$ <<- ~1>> * __[i](p_droit)__ (droit) (?:au but|dans les yeux) @@0 <<- ~1>> * __[i](p_droit_comme_un_i)__ droite?s? (comme un i) @@$ <<- ~1>> * __[i](p_eau_de)__ eaux? (de (?:bouleau|bleuet|chaux|coco|javel|jouvence|mer|noix de coco|parfum|pluie|seltz|source|vie)) @@$ <<- ~1>> * __[i](p_espérance_de_vie)__ espérances? (de vie) @@$ <<- ~1>> * __[i](p_état_de)__ états? (d’(?:âme|e(?:sprit|xtrême urgence)|urgence)|de (?:conservation|fait|l’art)) @@$ <<- ~1>> * | > | 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 | <<- ~1>> * __[i](loc_cuillère)__ cuillères? +(([àa]) (?:café|soupe)) @@$,w <<- \2 == "a" -2>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. <<- ~1>> * __[i](p_délai_de)__ délais? (d’attente|de (?:carence|connexion|prescription|préavis|rétraction|rigueur)) @@$ <<- ~1>> * __[i](p_demande_d_asile)__ demandes? (d’asile) @@$ <<- ~1>> * __[i](p_descente_aux)__ descentes? (aux (?:enfers|flambeaux)) @@$ <<- ~1>> * __[i](p_diner_aux_chandelles)__ d[îi]ners? (aux chandelles) @@$ <<- ~1>> * __[i](p_digne_de)__ dignes? (de (?:confiance|foi|ce nom)) @@$ <<- ~1>> * __[i](p_droit)__ (droit) (?:au but|dans les yeux) @@0 <<- ~1>> * __[i](p_droit_comme_un_i)__ droite?s? (comme un i) @@$ <<- ~1>> * __[i](p_eau_de)__ eaux? (de (?:bouleau|bleuet|chaux|coco|javel|jouvence|mer|noix de coco|parfum|pluie|seltz|source|vie)) @@$ <<- ~1>> * __[i](p_espérance_de_vie)__ espérances? (de vie) @@$ <<- ~1>> * __[i](p_état_de)__ états? (d’(?:âme|e(?:sprit|xtrême urgence)|urgence)|de (?:conservation|fait|l’art)) @@$ <<- ~1>> * |
︙ | ︙ | |||
5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 | <<- ~1>> * __[i](loc_soue_à_cochons)__ soues? (([àa]) cochons?) @@$,w <<- \2 == "a" -2>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. <<- ~1>> * __[u](p_système)__ systèmes? (d’exploitation|D) @@$ <<- ~1>> * __[i](p_taille)__ taille (\d+) @@$ <<- ~1>> * __[i](p_taux_de_qqch)__ taux (d’(?:abstention|absorption|alcool|alphabétisation|endettement|inflation|intérêt|imposition|occupation|ouverture|œstrogène|urée|usure)|de (?:change|cholest[ée]rol|glycémie|fécondité|participation|testostérone|TVA)) @@$ <<- ~1>> * __[i](p_tête_de_déterré)__ têtes? (de déterrée?s?) @@$ <<- ~1>> * __[i](p_tout_un_chacun)__ (tout un) chacun @@0 <<- ~1>> * __[i](p_tour_de_passe_passe)__ tours? (de passe-passe) @@$ <<- ~1>> * | > | > > > > > | 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 | <<- ~1>> * __[i](loc_soue_à_cochons)__ soues? (([àa]) cochons?) @@$,w <<- \2 == "a" -2>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. <<- ~1>> * __[u](p_système)__ systèmes? (d’exploitation|D) @@$ <<- ~1>> * __[i](p_taille)__ taille (\d+) @@$ <<- ~1>> * __[i](p_talons_aiguilles)__ talons? (aiguilles?) @@$ <<- ~1>> * __[i](p_taux_de_qqch)__ taux (d’(?:abstention|absorption|alcool|alphabétisation|endettement|inflation|intérêt|imposition|occupation|ouverture|œstrogène|urée|usure)|de (?:change|cholest[ée]rol|glycémie|fécondité|participation|testostérone|TVA)) @@$ <<- ~1>> * __[i](p_tête_de_déterré)__ têtes? (de déterrée?s?) @@$ <<- ~1>> * __[i](p_tout_un_chacun)__ (tout un) chacun @@0 <<- ~1>> * __[i](p_tour_de_passe_passe)__ tours? (de passe-passe) @@$ <<- ~1>> * __[i](p_trou_à_rat)__ trous? (([àa]) rats?) @@$,w <<- \2 == "a" -2>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. <<- ~1>> * __[i](loc_tueur_à_gages)__ tueu(?:r|se)s? (([àa]) gages) @@$,w <<- \2 == "a" -2>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. <<- ~1>> * __[i](loc_vache_à_lait)__ vaches? (([àa]) lait) @@$,w <<- \2 == "a" -2>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. <<- ~1>> * __[i](p_vecteur)__ vecteurs? (accélérations?|positions?|rotations?|vitesses?) @@$ <<- ~1>> * __[i](loc_vente_à_domicile)__ ventes? (([àa]) domicile) @@$,w <<- \2 == "a" -2>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. <<- ~1>> * __[i](loc_vernis_à_ongles)__ vernis (([àa]) ongles) @@$,w |
︙ | ︙ | |||
5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 | TEST: sa chambre, c’est une vraie soue {{a}} cochons. TEST: Un tueur {{a}} gages ne s’y prendrait jamais comme ça. TEST: Ventes {{a}} domicile insatisfaisantes TEST: Ce n’est que du vernis {{a}} ongles. TEST: le vol {{a}} l’étalage est un fléau. TEST: Il nous faut une {{voix}} de recours. TEST: c’est une putain d’usine {{a}} gaz. TEST: un champ de canne à sucre TEST: La batterie se recharge automatiquement grâce au moteur essence. TEST: c’est un moteur diésel. # simplification des nombres __<i](p_10_qqch)__ dix-(?:sept|huit|neuf) <<- ~>> dix __[i](p_20_30_40_50_qqch)__ (?:vingt|trente|quarante|cinquante)(-(?:deux|trois|quatre|cinq|six|sept|huit|neuf|et-un)| et un) @@$ <<- ~1>> * | > > > > | 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 | TEST: sa chambre, c’est une vraie soue {{a}} cochons. TEST: Un tueur {{a}} gages ne s’y prendrait jamais comme ça. TEST: Ventes {{a}} domicile insatisfaisantes TEST: Ce n’est que du vernis {{a}} ongles. TEST: le vol {{a}} l’étalage est un fléau. TEST: Il nous faut une {{voix}} de recours. TEST: c’est une putain d’usine {{a}} gaz. TEST: ce produit est notre vache {{a}} lait TEST: un champ de canne à sucre TEST: La batterie se recharge automatiquement grâce au moteur essence. TEST: c’est un moteur diésel. TEST: cette descente aux enfers interminable. TEST: c’est une vache à lait TEST: Ses talons aiguille étaient à la denière mode. # simplification des nombres __<i](p_10_qqch)__ dix-(?:sept|huit|neuf) <<- ~>> dix __[i](p_20_30_40_50_qqch)__ (?:vingt|trente|quarante|cinquante)(-(?:deux|trois|quatre|cinq|six|sept|huit|neuf|et-un)| et un) @@$ <<- ~1>> * |
︙ | ︙ | |||
5504 5505 5506 5507 5508 5509 5510 | __[s](p_nom_propre_et_pronom)__ ([A-ZÉÈÊ][\w-]+) +et (lui|elles?|eux|[nv]ous|[mt]oi) @@0,$ <<- morph(\1, ":[MT]", False) and morph(word(-1), ":Cs", False, True) and not before(r"\b(?:plus|moins|aussi) .* que +$") ~>> =rewriteSubject(\1,\2) # après être, après avoir __[i](p_être_qqch)__ | | | | 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 | __[s](p_nom_propre_et_pronom)__ ([A-ZÉÈÊ][\w-]+) +et (lui|elles?|eux|[nv]ous|[mt]oi) @@0,$ <<- morph(\1, ":[MT]", False) and morph(word(-1), ":Cs", False, True) and not before(r"\b(?:plus|moins|aussi) .* que +$") ~>> =rewriteSubject(\1,\2) # après être, après avoir __[i](p_être_qqch)__ ({etre}) +(à jamais|un jour|sous peu|du moins|avant tout|de passage|frère et sœur|mari et femme|père et mère|papa et maman|mission impossible|monnaie courante|pieds (?:et poings liés|nus)|partie (?:intégrante|prenante)) @@0,$ <<- morph(\1, ":V0e", False) ~2>> * __[i](p_être_pronom_qqch)__ ([ésf]\w+)-(?:ils|[nv]ous|elles) +(frère et sœur|mari et femme|père et mère|papa et maman|bon marché|meilleur marché|mission impossible) @@0,$ <<- morph(\1, ":V0e", False) ~2>> * __[i](p_qqch_on_ne_peut_plus_que)__ ({w1}) +(on ne peut (?:pas |)(?:plus|moins)|plus que) +({w2}) @@0,w,$ <<- morph(\1, ":(?:V0e|N)", False) and morph(\3, ":[AQ]", False) ~2>> * __[i](p_avoir_être_loc_adv1)__ ({avoir_etre}) +(pas|jamais|plus|en partie|point|tous (?:deux|trois)|somme toute) @@0,$ <<- morph(\1, ":V0", False) ~2>> * |
︙ | ︙ | |||
5701 5702 5703 5704 5705 5706 5707 | ((?:re|)donn\w+) +(sens) @@0,$ <<- morph(\1, ">(?:re|)donner/", False) ~2>> * __[i](p_faire_qqch)__ (f[aiîeo]\w*) +(tous(?: deux| trois|) +|)(allusion|amende honorable|assaut|bande à part|bonne figure|chaud|confiance|compliqué|copain[- ]copain|de (?:[mts]on|leur|[nv]otre) mieux|dé(?:bat|faut)|demi-tour|envie|fausse route|figure|froid|front commun|gr(?:ise mine|and (?:bruit|cas))|h(?:alte|onte)|illusion|long feu|ma(?:chine|rche) arrière|main basse|mouche|office|p(?:art(?:ie(?: intégrante|)|)|eur|laisir|rofil bas)|rage|salle comble|scandale|sens|signe|table rase|volte-face|ce que bon (?:me|te|lui|leur|nous|vous) semble) @@0,*,$ <<- morph(\1, ">faire/", False) ~2>> * <<- __also__ ~3>> * __[i](loc_laisser_pour_compte)__ | | | | 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 | ((?:re|)donn\w+) +(sens) @@0,$ <<- morph(\1, ">(?:re|)donner/", False) ~2>> * __[i](p_faire_qqch)__ (f[aiîeo]\w*) +(tous(?: deux| trois|) +|)(allusion|amende honorable|assaut|bande à part|bonne figure|chaud|confiance|compliqué|copain[- ]copain|de (?:[mts]on|leur|[nv]otre) mieux|dé(?:bat|faut)|demi-tour|envie|fausse route|figure|froid|front commun|gr(?:ise mine|and (?:bruit|cas))|h(?:alte|onte)|illusion|long feu|ma(?:chine|rche) arrière|main basse|mouche|office|p(?:art(?:ie(?: intégrante|)|)|eur|laisir|rofil bas)|rage|salle comble|scandale|sens|signe|table rase|volte-face|ce que bon (?:me|te|lui|leur|nous|vous) semble) @@0,*,$ <<- morph(\1, ">faire/", False) ~2>> * <<- __also__ ~3>> * __[i](loc_laisser_pour_compte)__ (laiss\w+) +(pour (co[mn]p?tes?)) @@0,$,$ <<- morph(\1, ">laisser/", False) >>> <<- \3 != "compte" -3>> compte # Confusion. Locution “laisser pour compte”.|https://fr.wiktionary.org/wiki/laisser_pour_compte <<- ~2>> * __[i](loc_mettre_à_qqch)__ (m(?:et|[iî][mst])\w*) +(([àa]) (?:bas|jour|niveau|plat|l’(?:écart|épreuve)|terre)) @@0,$,w <<- morph(\1, ">mettre/", False) >>> <<- \3 == "a" -3>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. <<- ~2>> * __[i](p_mettre_qqch)__ |
︙ | ︙ | |||
5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 | TEST: nous avions tous les deux besoin d’un peu de réconfort. TEST: Une tierce connaissance qui est au pire triviale, mais non nulle. TEST: ces immeubles qui les ont le plus marqués TEST: quel potentiel électoral réel pour les souverainistes pur sucre ? TEST: Cette scène que décrit ici Yannick est représentative. TEST: attentifs aux spécificités socioculturelles de chaque peuple, constituées dans la longue durée autour d’une langue et de traditions TEST: Il était à l’époque chargé de maintenir en état ces machines. # # //////////////////////////////////////// RÈGLES DE CONTRÔLE //////////////////////////////////////// # | > > | 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 | TEST: nous avions tous les deux besoin d’un peu de réconfort. TEST: Une tierce connaissance qui est au pire triviale, mais non nulle. TEST: ces immeubles qui les ont le plus marqués TEST: quel potentiel électoral réel pour les souverainistes pur sucre ? TEST: Cette scène que décrit ici Yannick est représentative. TEST: attentifs aux spécificités socioculturelles de chaque peuple, constituées dans la longue durée autour d’une langue et de traditions TEST: Il était à l’époque chargé de maintenir en état ces machines. TEST: Les laissés pour compte ignorés de tous. TEST: Ces épreuves sont mission impossible. # # //////////////////////////////////////// RÈGLES DE CONTRÔLE //////////////////////////////////////// # |
︙ | ︙ | |||
7761 7762 7763 7764 7765 7766 7767 | TEST: Et moi toujours en {{but}} à de nouveaux dangers # c’est / s’est __[i]/conf(conf_c_est_était)__ (s’)(est|était) +({w_3}) @@0,2,$ | | > | 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 | TEST: Et moi toujours en {{but}} à de nouveaux dangers # c’est / s’est __[i]/conf(conf_c_est_était)__ (s’)(est|était) +({w_3}) @@0,2,$ <<- morphex(\3, ":[AM]", ":[QGW]") -1>> c’ # Confusion probable. Si vous voulez dire, « ceci \2 », utilisez « c’ ». TEST: {{s’}}est vraiment merdique. TEST: s’est par exemple illustré au combat. TEST: il ne s’est pas juste montré # cane / canne (from LanguageTool) __[i]/conf(conf_canne_à_de)__ (canes?) (?:à (?:sucre|pêche|selfie)|de (?:bambou|bois|combat|compagnon|compagnonnage|défense|golf|marche|Noël|ramonage)|d’aveugles?) @@0 <<- -1>> =\1.replace("cane", "canne") # Confusion. La cane est la femelle du canard.|https://fr.wiktionary.org/wiki/cane |
︙ | ︙ |
Modified gc_lang/fr/webext/content_scripts/init.js from [86174a3577] to [4dca1795eb].
︙ | ︙ | |||
75 76 77 78 79 80 81 | }, _createMenus: function (dOptions) { if (dOptions.hasOwnProperty("ui_options")) { dOptions = dOptions.ui_options; if (dOptions.textarea) { for (let xNode of document.getElementsByTagName("textarea")) { | | | 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | }, _createMenus: function (dOptions) { if (dOptions.hasOwnProperty("ui_options")) { dOptions = dOptions.ui_options; if (dOptions.textarea) { for (let xNode of document.getElementsByTagName("textarea")) { if (xNode.style.display !== "none" && xNode.style.visibility !== "hidden" && xNode.getAttribute("spellcheck") !== "false") { this.lMenu.push(new GrammalecteMenu(this.nMenu, xNode)); this.nMenu += 1; } } } if (dOptions.editablenode) { for (let xNode of document.querySelectorAll("[contenteditable]")) { |
︙ | ︙ |
Modified gc_lang/fr/webext/content_scripts/panel_gc.css from [397d8a48b5] to [a76956d409].
︙ | ︙ | |||
93 94 95 96 97 98 99 | z-index: 1000; text-align: left; /*box-shadow: 0px 0px 0px 4px hsla(210, 0%, 50%, 0.4);*/ } div#grammalecte_tooltip_message_block { margin: 0; | | > > > > > > | 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | z-index: 1000; text-align: left; /*box-shadow: 0px 0px 0px 4px hsla(210, 0%, 50%, 0.4);*/ } 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; margin: 0 0 5px 0; border: 1px solid hsl(210, 50%, 60%); |
︙ | ︙ | |||
132 133 134 135 136 137 138 | 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%); } | | | > | 138 139 140 141 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 | 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, 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_url:hover, div#grammalecte_tooltip_db_search: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_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; font-weight: bold; |
︙ | ︙ |
Modified gc_lang/fr/webext/content_scripts/panel_gc.js from [499bdc1ad7] to [1162a03a3e].
︙ | ︙ | |||
14 15 16 17 18 19 20 | oGrammalecte.oGCPanel.recheckParagraph(parseInt(xElem.dataset.para_num)); } else if (xElem.id.startsWith("grammalecte_hide")) { xElem.parentNode.parentNode.style.display = "none"; } else if (xElem.id.startsWith("grammalecte_err") && xElem.className !== "grammalecte_error_corrected" && xElem.className !== "grammalecte_error_ignored") { oGrammalecte.oGCPanel.oTooltip.show(xElem.id); | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | oGrammalecte.oGCPanel.recheckParagraph(parseInt(xElem.dataset.para_num)); } else if (xElem.id.startsWith("grammalecte_hide")) { xElem.parentNode.parentNode.style.display = "none"; } else if (xElem.id.startsWith("grammalecte_err") && xElem.className !== "grammalecte_error_corrected" && xElem.className !== "grammalecte_error_ignored") { oGrammalecte.oGCPanel.oTooltip.show(xElem.id); } else if (xElem.id === "grammalecte_tooltip_url" || xElem.id === "grammalecte_tooltip_db_search") { oGrammalecte.oGCPanel.openURL(xElem.dataset.url); } else { oGrammalecte.oGCPanel.oTooltip.hide(); } } else { oGrammalecte.oGCPanel.oTooltip.hide(); } |
︙ | ︙ | |||
282 283 284 285 286 287 288 289 290 291 292 293 294 | } class GrammalecteTooltip { constructor (xContentNode) { 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: "^", }); | > | > > > > > > | < < | | > > > > > | 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 | } class GrammalecteTooltip { constructor (xContentNode) { this.sErrorId = null; this.bDebug = false; 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: " ››› base de données"}, {url: ""})); this.xTooltip.appendChild(xActions); // add tooltip to the page xContentNode.appendChild(this.xTooltip); xContentNode.appendChild(this.xTooltipArrow); } show (sNodeErrorId) { // err try { let xNodeErr = document.getElementById(sNodeErrorId); this.sErrorId = xNodeErr.dataset.error_id; // we store error_id here to know if spell_suggestions are given to the right word. let nTooltipLeftLimit = oGrammalecte.oGCPanel.getWidth() - 330; // paragraph width - tooltip width let nArrowLimit = oGrammalecte.oGCPanel.getWidth() - 20; 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 document.getElementById("grammalecte_tooltip_db_search").style.display = "none"; if (xNodeErr.dataset.gc_message.includes(" ##")) { this.bDebug = true; // display rule id let n = xNodeErr.dataset.gc_message.indexOf(" ##"); document.getElementById("grammalecte_tooltip_message").textContent = xNodeErr.dataset.gc_message.slice(0, n); document.getElementById("grammalecte_tooltip_rule_id").textContent = "Règle : " + xNodeErr.dataset.gc_message.slice(n+2); document.getElementById("grammalecte_tooltip_rule_id").style.display = "block"; } else { this.bDebug = false; document.getElementById("grammalecte_tooltip_message").textContent = xNodeErr.dataset.gc_message; document.getElementById("grammalecte_tooltip_rule_id").style.display = "none"; } if (xNodeErr.dataset.gc_url != "") { document.getElementById("grammalecte_tooltip_url").dataset.url = xNodeErr.dataset.gc_url; document.getElementById("grammalecte_tooltip_url").style.display = "inline"; } else { |
︙ | ︙ | |||
349 350 351 352 353 354 355 356 357 | this.xTooltipSuggBlock.textContent = "Aucune."; } } if (xNodeErr.dataset.error_type === "spelling") { // spelling mistake document.getElementById("grammalecte_tooltip_message").textContent = "Mot inconnu du dictionnaire."; document.getElementById("grammalecte_tooltip_ignore").dataset.error_id = xNodeErr.dataset.error_id; document.getElementById("grammalecte_tooltip_url").dataset.url = ""; document.getElementById("grammalecte_tooltip_url").style.display = "none"; | > > > > > | > | 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 | this.xTooltipSuggBlock.textContent = "Aucune."; } } if (xNodeErr.dataset.error_type === "spelling") { // spelling mistake document.getElementById("grammalecte_tooltip_message").textContent = "Mot inconnu du dictionnaire."; document.getElementById("grammalecte_tooltip_ignore").dataset.error_id = xNodeErr.dataset.error_id; document.getElementById("grammalecte_tooltip_rule_id").style.display = "none"; document.getElementById("grammalecte_tooltip_url").dataset.url = ""; document.getElementById("grammalecte_tooltip_url").style.display = "none"; if (this.bDebug) { document.getElementById("grammalecte_tooltip_db_search").style.display = "inline"; document.getElementById("grammalecte_tooltip_db_search").dataset.url = "https://www.dicollecte.org/dictionary.php?prj=fr&lemma="+xNodeErr.textContent; } else { document.getElementById("grammalecte_tooltip_db_search").style.display = "none"; } this.clearSuggestionBlock(); this.xTooltipSuggBlock.textContent = "Recherche de graphies possibles…"; xGrammalectePort.postMessage({ sCommand: "getSpellSuggestions", dParam: {sWord: xNodeErr.textContent}, dInfo: {sErrorId: xNodeErr.dataset.error_id} }); |
︙ | ︙ |
Modified gc_lang/fr/webext/panel/main.css from [7864b5afdd] to [85a3951146].
︙ | ︙ | |||
115 116 117 118 119 120 121 122 | padding: 10px 0; border-bottom: 1px solid hsl(210, 10%, 90%); text-align: center; cursor: pointer; color: hsl(210, 10%, 50%); font-size: 20px; } #menu .select_block:hover { | > > > | > | 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | padding: 10px 0; border-bottom: 1px solid hsl(210, 10%, 90%); text-align: center; cursor: pointer; color: hsl(210, 10%, 50%); font-size: 20px; } .invisible { opacity: .05; } #menu .select_block:hover { background-color: hsl(210, 20%, 92%); color: hsl(210, 80%, 50%); text-shadow: 0px 0px 1px hsl(210, 100%, 70%); opacity: 1; } .select_label { font-size: 12px; font-variant-caps: small-caps; } #page { |
︙ | ︙ |
Modified gc_lang/fr/webext/panel/main.html from [8f2648114d] to [92deec04dc].
︙ | ︙ | |||
32 33 34 35 36 37 38 | <p class="select" data-page="sc_options_page"><i class="select select_icon fa fa-book" data-page="sc_options_page"></i></p> <p class="select select_label" data-page="sc_options_page">Dictionnaires</p> </div> <div class="select select_block" data-page="info_page"> <p class="select" data-page="info_page"><i class="select select_icon fa fa-info-circle" data-page="info_page"></i></p> <p class="select select_label" data-page="info_page">Informations</p> </div> | | | 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <p class="select" data-page="sc_options_page"><i class="select select_icon fa fa-book" data-page="sc_options_page"></i></p> <p class="select select_label" data-page="sc_options_page">Dictionnaires</p> </div> <div class="select select_block" data-page="info_page"> <p class="select" data-page="info_page"><i class="select select_icon fa fa-info-circle" data-page="info_page"></i></p> <p class="select select_label" data-page="info_page">Informations</p> </div> <div class="select select_block invisible" data-page="test_page"> <p class="select" data-page="test_page"><i class="select select_icon fa fa-flask" data-page="test_page"></i></p> <p class="select select_label" data-page="test_page">Zone de test</p> </div> </ul> </nav> </header> <!-- #menu --> |
︙ | ︙ |
Modified graphspell-js/char_player.js from [c2f75d3e03] to [626d7d161b].
︙ | ︙ | |||
28 29 30 31 32 33 34 35 36 37 | ['œ', 'oe'], ['æ', 'ae'], ['ſ', 's'], ['ffi', 'ffi'], ['ffl', 'ffl'], ['ff', 'ff'], ['ſt', 'ft'], ['fi', 'fi'], ['fl', 'fl'], ['st', 'st'] ]), simplifyWord: function (sWord) { // word simplication before calculating distance between words sWord = sWord.toLowerCase(); let sNewWord = ""; let i = 1; for (let c of sWord) { | > < | < | | 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | ['œ', 'oe'], ['æ', 'ae'], ['ſ', 's'], ['ffi', 'ffi'], ['ffl', 'ffl'], ['ff', 'ff'], ['ſt', 'ft'], ['fi', 'fi'], ['fl', 'fl'], ['st', 'st'] ]), simplifyWord: function (sWord) { // word simplication before calculating distance between words sWord = sWord.toLowerCase(); sWord = [...sWord].map(c => this._xTransCharsForSimplification.gl_get(c, c)).join(''); let sNewWord = ""; let i = 1; for (let c of sWord) { if (c == 'e' || c != sWord.slice(i, i+1)) { // exception for <e> to avoid confusion between crée / créai sNewWord += c; } i++; } return sNewWord.replace(/eau/g, "o").replace(/au/g, "o").replace(/ai/g, "e").replace(/ei/g, "e").replace(/ph/g, "f"); }, aVowel: new Set("aáàâäāeéèêëēiíìîïīoóòôöōuúùûüūyýỳŷÿȳœæAÁÀÂÄĀEÉÈÊËĒIÍÌÎÏĪOÓÒÔÖŌUÚÙÛÜŪYÝỲŶŸȲŒÆ"), |
︙ | ︙ |
Modified graphspell/char_player.py from [73eee3ee03] to [0a316c953c].
︙ | ︙ | |||
25 26 27 28 29 30 31 | }) def simplifyWord (sWord): "word simplication before calculating distance between words" sWord = sWord.lower().translate(_xTransCharsForSimplification) sNewWord = "" for i, c in enumerate(sWord, 1): | | | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | }) def simplifyWord (sWord): "word simplication before calculating distance between words" sWord = sWord.lower().translate(_xTransCharsForSimplification) sNewWord = "" for i, c in enumerate(sWord, 1): if c == 'e' or c != sWord[i:i+1]: # exception for <e> to avoid confusion between crée / créai sNewWord += c return sNewWord.replace("eau", "o").replace("au", "o").replace("ai", "e").replace("ei", "e").replace("ph", "f") aVowel = set("aáàâäāeéèêëēiíìîïīoóòôöōuúùûüūyýỳŷÿȳœæAÁÀÂÄĀEÉÈÊËĒIÍÌÎÏĪOÓÒÔÖŌUÚÙÛÜŪYÝỲŶŸȲŒÆ") aConsonant = set("bcçdfghjklmnñpqrstvwxzBCÇDFGHJKLMNÑPQRSTVWXZ") aDouble = set("bcdfjklmnprstzBCDFJKLMNPRSTZ") # letters that may be used twice successively |
︙ | ︙ |