Index: gc_core/js/lang_core/gc_engine.js ================================================================== --- gc_core/js/lang_core/gc_engine.js +++ gc_core/js/lang_core/gc_engine.js @@ -266,12 +266,15 @@ sText = sText.replace(/ /g, ' '); // snbsp } if (sText.includes("'")) { sText = sText.replace(/'/g, "’"); } + if (sText.includes("‐")) { + sText = sText.replace(/‐/g, "-"); // Hyphen (U+2010) + } if (sText.includes("‑")) { - sText = sText.replace(/‑/g, "-"); // nobreakdash + sText = sText.replace(/‑/g, "-"); // Non-Breaking Hyphen (U+2011) } if (sText.includes("@@")) { sText = sText.replace(/@@+/g, ""); } return sText; Index: gc_core/py/lang_core/gc_engine.py ================================================================== --- gc_core/py/lang_core/gc_engine.py +++ gc_core/py/lang_core/gc_engine.py @@ -311,12 +311,14 @@ sText = sText.replace(" ", ' ') # nbsp if " " in sText: sText = sText.replace(" ", ' ') # nnbsp if "'" in sText: sText = sText.replace("'", "’") + if "‐" in sText: + sText = sText.replace("‐", "-") # Hyphen (U+2010) if "‑" in sText: - sText = sText.replace("‑", "-") # nobreakdash + sText = sText.replace("‑", "-") # Non-Breaking Hyphen (U+2011) if "@@" in sText: sText = re.sub("@@+", "", sText) return sText def parseText (self, sText, sText0, bParagraph, nOffset, sCountry, dOptions, bShowRuleId, bDebug, bContext): Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -4131,10 +4131,14 @@ !! !! !!!! Traits d’union !! !! !! + + +TEST: pourquoi habite‐t‐on loin de son activité (traits d’union U+2010) + ### ce / cet / cette / ces + nom + là __tu_ce_cette_ces_nom_là_ci__ [ce|cet|cette|ces] *WORD là <<- /tu/ morph(\2, ":[NB]", ":V0e") and not value(>1, "|où|") -2:3>> \2-\3 && Il manque probablement un trait d’union. @@ -8561,10 +8565,19 @@ <<- /conf/ --2>> content && Confusion. Locution prépositive “non content de…”.|https://fr.wiktionary.org/wiki/non_content_de TEST: elle avait tout son {{contant}} de problèmes. TEST: non {{comptant}} de s’en prendre à eux, il s’attaqua aussi à elles + +# contre partie +__conf_en_contrepartie__ + [en|sans] >contre >parti + <<- /conf/ -2:3>> contrepartie && Confusion. Locution “\1 contrepartie”. + +TEST: en {{contre parti}} ->> contrepartie +TEST: sans {{contres partis}} ->> contrepartie + # corps / cor __conf_corps_cor__ !! à bras-le-corps ¡¡ [à|a] [bras-le-corps|bras-le-cor] @@ -9847,11 +9860,11 @@ <<- /conf/ -1>> m’a && Confusion probable : “\-2“ est un participe passé. Vous confondez probablement “ma” et “m’a” (contraction de “me” suivi du verbe avoir “a”). TEST: tu {{ma}} prise par surprise ->> m’as TEST: il {{ma}} tuée ->> m’a TEST: cette femme ne {{ma}} prise que deux fois ->> m’a -TEST: {{on}} {{ma}} dézinguée ->> m’a|||ont +TEST: {{on}} {{ma}} dézinguée ->> ont|||m’a TEST: ça {{ma}} {{foutu}} en l’air TEST: cet homme {{ma}} succédé à ce poste ->> m’a TEST: {{ma}} {{donner}} la nausée, ce con TEST: c’est ça qui {{ma}} forcée à poursuivre ->> m’a TEST: ça ma grande, c’est mon secret @@ -9923,10 +9936,48 @@ n’ [es-ce|ai-ce|aie-ce|aies-ce|et-ce|ait-ce|aient-ce|hé-ce|eh-ce|e-ce|é-ce] pas <<- /conf/ ->> n’est-ce pas && Confusion. N’est-ce pas.|https://fr.wiktionary.org/wiki/n%E2%80%99est-ce_pas TEST: on en a plus qu’assez, {{n’ait-ce pas}} ? + +# nez / né +__conf_nez_né__ + !! à plein nez ¡¡ + [à|a] [plain+s|plein+s] [né+ses|nez] + <<- /conf/ ->> à plein nez && Confusion. Locution “à plein nez”.|https://fr.wiktionary.org/wiki/%C3%A0_plein_nez + + !! à vue [de|d’] nez ¡¡ + [à|a] [vu+ses|vut] [de|d’] [né+ses|nais|nait|nez] + <<- /conf/ ->> à vue de nez && Confusion. Locution “à vue de nez”.|https://fr.wiktionary.org/wiki/%C3%A0_vue_de_nez + + !! nez à nez ¡¡ + [né+ses|ne|nez|nait|nais] [à|a] [né+ses|ne|nez|nait|nais] + <<- /conf/ ->> nez à nez && Confusion. Locution “nez à nez”.|https://fr.wiktionary.org/wiki/nez_%C3%A0_nez + + [à|a] [mon|ton|son|notre|votre|leur] né + au [né+ses] + [dans|sur|sous] le [né+ses] + >crotte [de|d’] [né+ses] + [>mettre|>fourrer] ?@:[WX]¿ [le|mon|ton|son|notre|votre|leur] [né+ses] + >voir ?@:[WX]¿ plus loin [que|qu’] [le|mon|ton|son|notre|votre|leur] [né+ses] + >voir ?@:[WX]¿ plus loin [que|qu’] le bout [de|d’] [mon|ton|son|notre|votre|leur] [né+ses] + >avoir du [né+ses] + <<- /conf/ --1>> nez && Confusion. Pour l’organe olfactif, écrivez “nez”.|https://fr.wiktionary.org/wiki/nez + + [né+ses] au vent + <<- /conf/ -1>> nez && Confusion. Pour l’organe olfactif, écrivez “nez”.|https://fr.wiktionary.org/wiki/nez + +TEST: dans le {{né}} ->> nez +TEST: {{a plain né}} ->> à plein nez +TEST: {{a vu de nez}} ->> à vue de nez +TEST: elles se retrouvent {{né à né}} ->> nez à nez +TEST: je ne puis tolérer qu’il me raccroche au {{né}} ->> nez +TEST: avancer {{né}} au vent ->> nez +TEST: ne fourre pas ton {{né}} n’importe où ->> nez +TEST: ça sent le gaz à plein nez +TEST: à vue de nez, ça pue bien fort + # notre / nôtre -- votre / vôtre # Hunspell corrige déjà les formes au pluriel (les nôtres). __conf_nôtre_notre__ [le|la|les|du|des|au|aux] notre @@ -10553,10 +10604,11 @@ [>pore|>porc] [usb|RJ45|DVI|HDMI|Ethernet|DisplayPort] <<- /conf/ -1>> port|ports && Confusion. Pour évoquer les connecteurs, écrivez “port”.|https://fr.wiktionary.org/wiki/port [pore|porc] de l’ [écharpe|étoile|épée] + [pore|porc] du masque <<- /conf/ -1>> port && Confusion. Pour évoquer les objects que l’on porte, écrivez “port”.|https://fr.wiktionary.org/wiki/port TEST: les {{ports}} de la peau TEST: du {{port}} au caramel TEST: elle prépare un rôti de {{port}} @@ -14577,10 +14629,11 @@ ¿[de|d’]¿ la main dans la main ¿[de|d’]¿ la mort dans l’ âme ¿[de|d’]¿ la queue entre les jambes ¿[de|d’]¿ la peur au ventre l’ air [de|d’] rien + la gorge [nouée|serrée] la tête entre [mes|tes|ses|nos|vos|leurs] mains ?le¿ dos au mur le cas échéant le cœur battant la chamade le cœur [gros|serré] @@ -15566,11 +15619,11 @@ >compte offshore concours [de|d’] beauté >conférence [de|d’] presse >congé [maternité|paternité] >conseiller d’ orientation [scolaire|professionnelle] - >connexion à Internet + >connexion ?à¿ Internet >conte [de|d’] fées >contrôle [de|d’] routine >convention [récepteur|générateur] >coque [de|d’] noix >corbeille à >pain @@ -15914,10 +15967,11 @@ >seuil [de|d’] tolérance >seuil [de|d’] tolérance à la douleur >silo à [>grains|blé] >site [de|d’] lancement >soldat d’ élite + >solution [de|d’] [rechange|repli] >sonnette d’ alarme >sortie [de|d’] secours >soue à >cochon >sourate [*NUM|$:B] ?,¿ verset [*NUM|$:B] >sujet [de|d’] [prédilection|préoccupation] @@ -16532,12 +16586,15 @@ <<- not value(<1, "|un|le|ce|du|mon|ton|son|notre|votre|leur|") ~1>> * si @:[AW] <<- not (value(\2, "|bien|") and value(>1, "|que|qu’|")) and not value(\2, "|tant|") ~1>> * - un [brin|chouia|chouïa|rien|minimum|soupçon|tantinet] ?[trop|plus|moins]¿ + un [chouia|chouïa|rien|tantinet] ?[trop|plus|moins]¿ <<- morph(>1, ":A", ":G") ~>> * + + un [brin|minimum|poil|soupçon] ?[trop|plus|moins]¿ + <<- morph(>1, ":A", ":(?:A.*:[me]:[si]|G)") ~>> * [assez|trop] @:[AW]¬:[123][sp] <<- ~1>> * pas [assez|trop] @@ -16923,10 +16980,12 @@ <<- morph(\1, ":[123]p") ~2>> * on ?[ne|n’]¿ ?[le|la|l’|les|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ ?[le|la|l’|les|en|y|lui|leur]¿ *WORD [tous|toutes|tout_e_s] <<- morph(\-2, ":[123]s") ~-1>> * + [tous|toutes] , sans >exception , + <<- ~2:0>> * @@@@ @@@@ @@@@ @@ -17376,10 +17435,11 @@ TEST: ceux de modeste condition n’ont pas semblable privilège TEST: peut-être qu’ailleurs il est des pucelles ou des demoiselles pour porter ce nom. TEST: la qualité desdits malheureux TEST: ç’a été dur. TEST: dût ma vanité en souffrir, je viendrai quoi qu’il arrive +TEST: certaines régions sont un poil plus compliquées @@@@ @@@@ @@@@ @@ -23826,23 +23886,23 @@ de [la|l’|leur] @:[NA]¬:Y @:[VR]¬:[NAP] de [la|l’|leur] @:[NA]¬:Y , @¬:[NA] <<- ~1:3>> * $:LR [de|d’] [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs] @:[NA] - $:LR [de|d’] [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs] @:[NA] ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles] + $:LR [de|d’] [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs] @:[NA] ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles|est] $:LR [de|d’] [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs] @:[NA] @:[VR]¬:[NAP] $:LR [de|d’] [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs] @:[NA] , @¬:[NA] <<- ~1:4>> * $:LR [des|du|de|d’] @:[NA] - $:LR [des|du|de|d’] @:[NA] ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles] + $:LR [des|du|de|d’] @:[NA] ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles|est] $:LR [des|du|de|d’] @:[NA] @:[VR]¬:[NAP] $:LR [des|du|de|d’] @:[NA] , @¬:[NA] <<- ~1:3>> * en [plein|pleine] @:[NA] - en [plein|pleine] @:[NA] ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles] + en [plein|pleine] @:[NA] ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles|est] en [plein|pleine] @:[NA] @:[VR]¬:[NAP] en [plein|pleine] @:[NA] , @¬:[NA] <<- ~1:3>> * [à|avec|chez|contre|dans|envers|par|pour|selon|sous|sur|au|aux] [__URL__|__MAIL__] @@ -26121,10 +26181,22 @@ TEST: Nous ne t’avons pas {{écoutées}}. TEST: comme ces informations m’avaient {{manquées}} TEST: les notes que tu m’as données sont mal écrites. TEST: Garde précieusement les secrets que je t’ai confiés. TEST: je ne manquai pas de travailler aux choses qu’il m’avait prescrites +TEST: Quelle mouche l’a piqué ? +TEST: Quelle mouche l’a piquée ? +#TEST: Quelle mouche nous a piqué ? +#TEST: Quelle mouche nous a piquée ? +TEST: Quelle mouche nous a piqués ? +TEST: Quelle mouche nous a piquées ? +TEST: Quelle mouche vous a piqué ? +TEST: Quelle mouche vous a piquée ? +TEST: Quelle mouche vous a piqués ? +TEST: Quelle mouche vous a piquées ? +TEST: Quelle mouche les a piqués ? +TEST: Quelle mouche les a piquées ? __ppas_qui_avoir__ qui ?[ne|n’]¿ ?[lui|leur]¿ >avoir @:Q.*:(?:f|m:p)¬:m:[si] <<- /ppas/ --1>> =suggVerbPpas(\-1, ":m:s") && Le participe passé devrait être au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais @@ -26737,10 +26809,11 @@ <<- /imp/ space_after(\1, 1, 1) and morph(\3, ":(?:Y|Ov)", ":[NAB]") and not morph(<1, ":O[sv]") -1:2>> \1-\2 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{Laisse les}} entrer… TEST: {{Laissez la}} venir… +TEST: {{laisse le}} faire TEST: Laisse les chiens tranquilles TEST: Laissez la peste leur pourrir la vie encore quelque temps. TEST: le coût humain de la guerre qu’il a laissé les submerger. TEST: je vous laisse les consulter TEST: Je les laisse la découvrir ! @@ -27960,11 +28033,11 @@ TEST: {{prend on}} le temps d’y réfléchir ? TEST: De quel droit {{vient il}} m’{{ennuyer}} ? TEST: comment {{était il}} TEST: Pourquoi le message de Jean {{était il}} très radical pour son époque ? -TEST: Pourquoi le message de Jean {{était‐il}} très radical pour son époque ? +TEST: Pourquoi le message de Jean était‐il très radical pour son époque ? (Hyphen U+2010) __inte_union_ce!7__ [|,|(] [est|était|étaient] ce ?pas¿ [le|la|les|l’|un|une|de|des|d’|ce|cet|cette|ces|quelques|plusieurs|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs] [|,|(] [est|était|étaient] ce ?pas¿ @:G¬:[NA].*:[me]:[si]|>(?:qu[ei’]|pourquoi|dont)/ @@ -28739,12 +28812,14 @@ [tous|toutes] @:V¬:(?:G|N|A|3p|P|Q|V[23].*:Y) [tous|toutes] qui @:V¬:(?:G|3p|P) <<- /conj/ not morph(<1, ":[VR]|>(?:et|ou)/") --1>> =suggVerb(\-1, ":3p") && Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 3ᵉ personne du pluriel. -TEST: Tous {{venait}} à la fête. -TEST: Toutes {{ignorait}} ce qu’ils avaient fait. +TEST: Tous {{venait}} à la fête. ->> venaient +TEST: Toutes {{ignorait}} ce qu’ils avaient fait. ->> ignoraient +TEST: tous, sans exception, {{devine}} le fond du problème ->> devinent +TEST: toutes, sans exception, {{irons}} à l’Université ->> iront TEST: Il faut mettre un coup de grâce et tous monter sur Paris par tous les moyens possibles TEST: Pourrons-nous tous vaincre. TEST: Vous pouvez tous triompher de votre adversaire avec de la ruse. TEST: tous prendre une bonne cuite, voilà ce que nous allons faire. TEST: on va tous manger au resto.