Index: gc_lang/fr/modules/gce_suggestions.py ================================================================== --- gc_lang/fr/modules/gce_suggestions.py +++ gc_lang/fr/modules/gce_suggestions.py @@ -537,5 +537,19 @@ def normalizeInclusiveWriting (sToken): "typography: replace word separators used in inclusive writing by underscore (_)" return sToken.translate(_xNormalizedCharsForInclusiveWriting) + + +def queryNamesPOS(sWord1, sWord2): + lMorph1 = _oSpellChecker.getMorph(sWord1) + lMorph2 = _oSpellChecker.getMorph(sWord2) + if not lMorph1 or not lMorph2: + return ":N:e:p" + sGender1 = cr.getGender(lMorph1) + sGender2 = cr.getGender(lMorph2) + if sGender1 == ":m" or sGender2 == ":m": + return ":N:m:p" + if sGender1 == ":f" or sGender2 == ":f": + return ":N:f:p" + return ":N:e:p" Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -9933,10 +9933,29 @@ TEST: {{mai}} Patrick vient demain. TEST: Je viendrai, {{mai}} il faudra avoir tout prévu. TEST: {{mes}} que voulez-vous TEST: Mai pluvieux. + +# mat / mât +__conf_mat_mât__ + >échec et >mât + <<- /conf/ -3>> mat && Confusion. Un mât est un poteau portant des voiles ou un drapeau.|https://fr.wiktionary.org/wiki/mat + + [grand|grands] [mat|mats|mas] + <<- /conf/ -2>> =\2.replace("a", "â").replace("A", "Â") && Confusion. Pour évoquer un poteau portant des voiles, écrive “mât”.|https://fr.wiktionary.org/wiki/mât + + [mat|mats|mas] [de|d’] [artimon|beaupré|branchement|cocagne|battage|fortune|hune|misaine|perroquet|perruche] + [mat|mats|mas] en [>acier|>alu|>aluminium|bois|>carbone|>époxy|>fibre|>résine] + [mat|mats|mas] du [bateau|catamaran|navire|trimaran|vaisseau|voilier] + [mat|mats|mas] de la goélette + <<- /conf/ -1>> =\1.replace("a", "â").replace("A", "Â") && Confusion. Pour évoquer un poteau portant des voiles, écrive “mât”.|https://fr.wiktionary.org/wiki/mât + +TEST: Échec et {{mât}} +TEST: le grand {{mat}} +TEST: {{Mat}} de misaine + # min / mins __conf_symbole_min__ *NUM mins <<- /conf/ -2>> min && Les unités de mesure abrégées ne prennent pas la marque du pluriel. @@ -17055,10 +17074,41 @@ @@@@GRAPH: purge_passe3|pp3 _ @@@@ @@@@ @@@@ @@@@ + + +__fusions_enum_noms_communs__ + [|,|(|/_start_] *WORD et *WORD + <<- morph(\2, ":N", ":(?:G|123[sp]|P|A)") and morph(\4, ":N", ":(?:G|123[sp]|P|A)") and not morph(>1, ":[NA]") =>> define(\2, queryNamesPOS(\2, \4)) + <<- __also__ ~2:0>> ␣ + + [les|plusieurs] *WORD et *WORD + <<- morph(\2, ":N", ":(?:G|123[sp]|P)") and morph(\4, ":N", ":(?:G|123[sp]|P)") and not morph(>1, ":[NA]") =>> define(\2, queryNamesPOS(\2, \4)) + <<- __also__ ~2:0>> ␣ + + [des|ces|mes|tes|ses|nos|vos|leurs|quelques] *WORD et *WORD + <<- morph(\2, ":N", ":G") and morph(\4, ":N", ":G") and not morph(>1, ":[NA]") =>> define(\2, queryNamesPOS(\2, \4)) + <<- __also__ ~2:0>> ␣ + + certains *WORD et *WORD + <<- morph(\2, ":N.*:[me]:[pi]", ":(?:G|[23]p)") and morph(\4, ":N.*:[me]:[pi]", ":(?:G|[23]p)") and not morph(>1, ":[NA]") =>> define(\2, ":N:m:p") + <<- __also__ ~2:0>> ␣ + + [lesdits|desdits] *WORD et *WORD + <<- morph(\2, ":N.*:[me]:[pi]", ":G") and morph(\4, ":N.*:[me]:[pi]", ":G") and not morph(>1, ":[NA]") =>> define(\2, ":N:m:p") + <<- __also__ ~2:0>> ␣ + + certaines *WORD et *WORD + <<- morph(\2, ":N.*:[fe]:[pi]", ":(?:G|[23]p)") and morph(\4, ":N.*:[fe]:[pi]", ":(?:G|[23]p)") and not morph(>1, ":[NA]") =>> define(\2, ":N:f:p") + <<- __also__ ~2:0>> ␣ + + [lesdites|desdites] *WORD et *WORD + <<- morph(\2, ":N.*:[fe]:[pi]", ":G") and morph(\4, ":N.*:[fe]:[pi]", ":G") and not morph(>1, ":[NA]") =>> define(\2, ":N:f:p") + <<- __also__ ~2:0>> ␣ + __fusions_noms_propres_et_pronoms__ [|,|(|/_start_] [moi|toi|lui|elle|iel|nous|vous|eux|elles|iels|$:M] et [moi|nous] [|,|(|/_start_] [moi|nous] et [moi|toi|lui|elle|iel|nous|vous|eux|elles|iels|$:M] <<- not value(\1, "|que|qu’|") ~2:0>> ␣ @@ -19249,29 +19299,10 @@ TEST: cette {{marre}} est presque sèche. TEST: j’en ai {{mare}} de tout ça. TEST: en avoir vraiment {{mare}} de ces conneries. - -# mat / mât -__conf_mat_mât__ - >échec et >mât - <<- /conf/ -3>> mat && Confusion. Un mât est un poteau portant des voiles ou un drapeau.|https://fr.wiktionary.org/wiki/mat - - [grand|grands] [mat|mats|mas] - <<- /conf/ -2>> =\2.replace("a", "â").replace("A", "Â") && Confusion. Pour évoquer un poteau portant des voiles, écrive “mât”.|https://fr.wiktionary.org/wiki/mât - - [mat|mats|mas] [de|d’] [artimon|beaupré|branchement|cocagne|battage|fortune|hune|misaine|perroquet|perruche] - [mat|mats|mas] en [>acier|>alu|>aluminium|bois|>carbone|>époxy|>fibre|>résine] - [mat|mats|mas] du [bateau|catamaran|navire|trimaran|vaisseau|voilier] - [mat|mats|mas] de la goélette - <<- /conf/ -1>> =\1.replace("a", "â").replace("A", "Â") && Confusion. Pour évoquer un poteau portant des voiles, écrive “mât”.|https://fr.wiktionary.org/wiki/mât - -TEST: Échec et {{mât}} -TEST: le grand {{mat}} -TEST: {{Mat}} de misaine - # mâter / mater __conf_mater_mâter__ >mâter $:D [>adversaire|>armée|>cavalier|>cheval|>chien|>con|>connard|>connasse|>cul|>dame|>enfoiré|>emmerdeur|>enfant|>ennemi|>enculé|>femme|>fesse|>fille|fils|>fou|>foule|>gamin|>garçon|>homme|>horde|>incendie|>insurrection|>jument|>lion|>nation|>peuple|>pion|>pute|>rebelle|>rebellion|>reine|>roi|>sein|>salope|>tigre|>tour|>troupe] <<- /conf/ -1>> =\1.replace("ât", "at").replace("ÂT", "AT") @@ -24998,11 +25029,11 @@ !!!! Participes passés: accord en nombre avec la conjugaison de « être » (et équivalent) !! __ppas_être_accord_sing!3__ (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (/_VE_) @:[NAQ].*:p¬:[GMWYsi] (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (/_LVED_) ?/_LVE_¿ ?/_LVE_¿ ?/_LVE_¿ ?/_LVE_¿ /_LVEF_ @:[NAQ].*:p¬:[GMWYsi] - <<- /ppas/ not tag_before(\1, "_que_") and not morph(\1, ":G") and morph(\2, ":[123]s", ":(?:C|N.*:p)") + <<- /ppas/ not morph(\1, ":G") and morph(\2, ":[123]s", ":(?:C|N.*:p)") --1>> =suggSing(\-1) && Accord avec la forme verbale “\2” : “\-1” devrait être au singulier. [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (/_VE_) @:[NAQ].*:p¬:[GMWYsi] [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (/_LVED_) ?/_LVE_¿ ?/_LVE_¿ ?/_LVE_¿ ?/_LVE_¿ /_LVEF_ @:[NAQ].*:p¬:[GMWYsi] <<- /ppas/ morph(\1, ":[123]s", ":(?:C|N.*:p)") --1>> =suggSing(\-1) && Accord avec la forme verbale “\1” : “\-1” devrait être au singulier. @@ -25026,11 +25057,11 @@ __ppas_être_accord_plur!3__ (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (/_VE_) @:[NAQ].*:s¬:[GMWYpi] (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (/_LVED_) ?/_LVE_¿ ?/_LVE_¿ ?/_LVE_¿ ?/_LVE_¿ /_LVEF_ @:[NAQ].*:s¬:[GMWYpi] - <<- /ppas/ not tag_before(\1, "_que_") and not value(\-1, "|légion|néant|réalité|") and not morph(\1, ":G") and morph(\2, ":[13]p") + <<- /ppas/ not value(\-1, "|légion|néant|réalité|") and not morph(\1, ":G") and morph(\2, ":[13]p") --1>> =suggPlur(\-1) && Accord avec la forme verbale “\2” : “\-1” devrait être au pluriel. [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (/_VE_) @:[NAQ].*:s¬:[GMWYpi] [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (/_LVED_) ?/_LVE_¿ ?/_LVE_¿ ?/_LVE_¿ ?/_LVE_¿ /_LVEF_ @:[NAQ].*:s¬:[GMWYpi] <<- /ppas/ not value(\-1, "|légion|néant|réalité|") and morph(\1, ":[13]p") --1>> =suggPlur(\-1) && Accord avec la forme verbale “\1” : “\-1” devrait être au pluriel. @@ -25176,10 +25207,11 @@ TEST: ces dames se font {{discrets}} ->> discrètes TEST: certains hommes se font {{rare}} ->> rares TEST: certains hommes qui s’efforcent d’être {{habile}} ->> habiles TEST: certaines femmes se font {{petit}} ->> petites TEST: certaines femmes qui ne s’efforcent pas de paraître {{sensible}} ->> sensibles +TEST: Surtout que les factures et opérations sont {{présent}} ->> présentes TEST: Les tortures que ce journaliste pense être “normales”. TEST: les abrutis sont légion __ppas_nom_propre_être_accord__