Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -705,19 +705,20 @@ TEST: {{"}}Le grand homme.” ->> « |“ TEST: “Le grand homme.{{"}} ->> " »|”" __/typo(typo_guillemets_typographiques_simples_doubles_ouvrants)__ - (?:^|[ –—-])(['’]['’])(?=\w) @@* + (?:^|[ –—-])(['’‘]['’‘])(?=\w) @@* <<- -1>> « |“ && Guillemets typographiques ouvrants. __/typo(typo_guillemets_typographiques_simples_doubles_fermants)__ [\w.?!…,](['’]['’])(?![\w'’]) @@* <<- -1>> " »|”" && Guillemets typographiques fermants. TEST: {{''}}Ça{{”}} recommence. ->> « |“||| TEST: Le {{''}}grand{{”}} homme. ->> « |“||| TEST: Le {{“}}grand{{''}} homme. ->> ||| »|” +TEST: Le {{‘‘}}barbare{{’’}} dont il faut se défendre à tout prix ->> « |“||| »|” __/typo(typo_guillemets_typographiques_simples_ouvrants)__ (?:^|[ –—-])(['’])(?=\w) @@* <<- -1>> “|‘|‹ && Guillemets typographiques ouvrants. @@ -1470,14 +1471,15 @@ <<- \0.endswith("e") ->> le && Erreur de numérisation ? <<- __else__ and \0.endswith("a") ->> la && Erreur de numérisation ? <<- __else__ and \0.endswith("à") ->> la|là && Erreur de numérisation ? <<- __else__ ->> le|la && Erreur de numérisation ? -TEST: __ocr__ avec {{1e}} chien du policier -TEST: __ocr__ il le jura sur {{1a}} tête de sa mère -TEST: __ocr__ {{1c}} chat du voinsin est idiot -TEST: __ocr__ {{[e}} chien a faim +TEST: __ocr__ avec {{1e}} chien du policier ->> le +TEST: __ocr__ il le jura sur {{1a}} tête de sa mère ->> la +TEST: __ocr__ {{]à}} ->> la|là +TEST: __ocr__ {{1c}} chat du voinsin est idiot ->> le|la +TEST: __ocr__ oui, {{[e}} chien a faim ->> le __[i]/conf(conf_1e_1a_1es)__ [1[\]][ea]s? <<- \0.endswith("e") and (morph(word(1), ":(?:[NA].*:[me]:[si]|V)", ":G") or morph(word(-1), ">ne/")) ->> le && Erreur de frappe ? @@ -1485,11 +1487,11 @@ <<- \0.endswith("es") and (morph(word(1), ":(?:[NA].*:[pi]|V)", ":G") or morph(word(-1), ">ne/")) ->> les && Erreur de frappe ? TEST: {{1e}} marginal ->> le TEST: {{1a}} venue des problèmes ->> la TEST: {{1es}} enfants sont au lit ->> les -TEST: Je… ne {{1e}}… crois pas… +TEST: Je… ne {{1e}}… crois pas… ->> le __[i]/ocr(ocr_les)__ [1[\]][ea]s <<- ->> les && Erreur de numérisation ? @@ -2350,14 +2352,17 @@ La Fontaine <<- ~>> ␣ <<- =>> define(\1, ":M2:e:i") cac 40 + Rio grande <<- ~>> ␣ + <<- =>> define(\1, ":N:m:i") France [2|3|4|5|0|O] <<- ~>> ␣ + <<- =>> define(\1, ":MP:e:i") Peugeot ~^\d0\d\d?$ <<- ~>> ␣ <<- =>> define(\1, ":N:e:i") @@ -2947,10 +2952,11 @@ __ocr_avec__ [arec|aven] <<- /ocr/ ->> avec && Erreur de numérisation ? TEST: __ocr__ Elle s’en alla {{arec}} eux sans un regard en arrière. + # avaient / avalent __ocr_avaient__ avalent <<- /ocr/ ->> avaient && Erreur de numérisation ? @@ -3796,11 +3802,11 @@ !! # élisions __eleu_élisions_manquantes__ [le|la|de] ~^[aâeéèêiîoôuûyœæh]. - <<- /eleu/ space_after(\1, 1, 1) and not re.search("(?i)^(?:onz[ei]|énième|iourte|oui|ouï-dire|ouistiti|ouate|one-?step|ouf|yacht|Ouagadougou|I(?:I|V|X|er|ᵉʳ|ʳᵉ|è?re))", \2) and morph(\2, ":", ":G|;é") + <<- /eleu/ space_after(\1, 1, 1) and not re.search("(?i)^(?:I(?:I|V|X|er|ᵉʳ|ʳᵉ|è?re))", \2) and morph(\2, ":", ":G|;é") -1:.2>> =\1[0:1]+"’" && Élision de l’article devant un mot commençant par une voyelle.|http://fr.wikipedia.org/wiki/Élision si [il|ils] <<- /eleu/ space_after(\1, 1, 1) -1:.2>> s’ && Il faut élider “si” et l’accoler au pronom.|http://fr.wikipedia.org/wiki/Élision @@ -3844,11 +3850,11 @@ # ce -> cet __eleu_euphonie_cet__ ce ~^[aâeéèêiîoôuûyœæ] - <<- /eleu/ not re.search("(?i)^(?:onz|énième|ouf|énième|ouistiti|yacht|one-?step|I(?:I|V|X|er|ᵉʳ))", \2) and morph(\2, ":[NA].*:[me]") + <<- /eleu/ not re.search("(?i)^(?:I(?:I|V|X|er|ᵉʳ))", \2) and morph(\2, ":[NA].*:[me]", ":G|;é") -1>> cet && Euphonie : “ce” devient “cet” devant un mot commençant par une voyelle.|https://fr.wikipedia.org/wiki/Euphonie TEST: {{ce}} animal est dangereux TEST: ce yacht @@ -3865,15 +3871,15 @@ # ma, ta, sa / mon, ton, son __eleu_euphonie_ma_ta_sa__ [ma|ta] ~^[aâeéèêiîoôuûyœæ]. - <<- /eleu/ morph(\2, ":[NA]") and not re.search("(?i)^(?:onz|énième|ouf|énième|I(?:I|V|X|i?[eè]?re|ʳᵉ))", \2) + <<- /eleu/ morph(\2, ":[NA]", ":G|;é") and not re.search("(?i)^(?:I(?:I|V|X|i?[eè]?re|ʳᵉ))", \2) -1>> =\1[0:1]+"on" && Euphonie : lorsque le déterminant “\1” est suivi d’un nom ou d’un adjectif commençant par une voyelle, il est d’usage d’utiliser le pronom “mon”, “ton” ou “son” pour respecter l’euphonie. Exemple : mon étoile (féminin).|https://fr.wikipedia.org/wiki/Euphonie sa ~^[aâeéèêiîoôuûyœæ]. - <<- /eleu/ not \1.isupper() and morph(\2, ":[NA]") and not re.search("(?i)^(?:onz|énième|ouf|énième|I(?:I|V|X|i?[eè]?re|ʳᵉ))", \2) >>> + <<- /eleu/ not \1.isupper() and morph(\2, ":[NA]", ":G|;é") and not re.search("(?i)^(?:I(?:I|V|X|i?[eè]?re|ʳᵉ))", \2) >>> <<- /eleu/ morph(\2, ":[123][sp]") -1>> =\1[0:1]+"on|ça" && Euphonie : lorsque le déterminant “\1” est suivi d’un nom ou d’un adjectif commençant par une voyelle, il est d’usage d’utiliser le pronom “mon”, “ton” ou “son” pour respecter l’euphonie. (À moins que vous ne confondiez “sa” et “ça”.) Exemple : son étoile (féminin), ça existe.|https://fr.wikipedia.org/wiki/Euphonie <<- /eleu/ __else__ -1>> =\1[0:1]+"on" && Euphonie : lorsque le déterminant “\1” est suivi d’un nom ou d’un adjectif commençant par une voyelle, il est d’usage d’utiliser le pronom “mon”, “ton” ou “son” pour respecter l’euphonie. Exemple : son étoile (féminin).|https://fr.wikipedia.org/wiki/Euphonie TEST: {{ta}} aimée ->> ton TEST: {{ma}} obligée ->> mon @@ -14451,11 +14457,11 @@ in cauda venenum in vino veritas sursum corda sic transit gloria mundi <<- ~>> ␣ - <<- =>> =define(\1, ":LP") + <<- =>> define(\1, ":LP") __purge_locutions_incises__ [|,|(] [oui|non] [|,|)] [|,|(] ?oui¿ ou non [|,|)] @@ -14462,11 +14468,11 @@ [|,|(] et non l’ inverse [|,|)] [|,|(] fait remarquable [|,|)] [|,|(] entre autres ?choses¿ [|,|)] [|,|(] mieux encore [|,|)] [|,|(] n’ est-ce pas [|)] - <<- ~2:-2>>* + <<- ~2:-2>> * __purge_locutions_distance__ à ?seulement¿ [*NUM|$:B:e:p|quelques|plusieurs] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] [de|d’] [distance|ici] à ?seulement¿ [*NUM|$:B:e:p|quelques|plusieurs] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] en [amont|aval] @@ -17364,11 +17370,11 @@ @@@@ @@@@ @@@@ @@@@ -@@@@GRAPH: purge_passe2|pp2 _ +@@@@GRAPH: intergraphe12a|ig12a _ @@@@ @@@@ @@@@ @@@@ @@ -17720,26 +17726,26 @@ # tous / tout / toute / toutes __purge_tout_tout_tous_toutes__ tout [le|ce|cet|mon|ton|son] toute [la|cette|ma|ta|sa] - [tous|toutes|tout_e_s] [les|des|mes|tes|ses|ces|nos|vos|leurs] + [tous|toutes|tout·e·s] [les|des|mes|tes|ses|ces|nos|vos|leurs] <<- ~1>> * /-on [tous|toutes] /-nous [tous|toutes] /-vous [tous|toutes] /-ils [tous|toutes] /-elles [tous|toutes] - /-iel [tous|toutes|tout_e_s] - /-iels [tous|toutes|tout_e_s] + /-iel [tous|toutes|tout·e·s] + /-iels [tous|toutes|tout·e·s] <<- ~2>> * - *WORD [tous|toutes|tout_e_s] + *WORD [tous|toutes|tout·e·s] <<- 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] + 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>> * @@ -17746,11 +17752,11 @@ @@@@ @@@@ @@@@ @@@@ -@@@@GRAPH: purge_passe3|pp3 _ +@@@@GRAPH: intergraphe12b|ig12b _ @@@@ @@@@ @@@@ @@@@ @@ -24648,11 +24654,11 @@ nous [tous|toutes] qui vous [tous|toutes] qui eux tous qui elles toutes qui - iels tout_e_s qui + iels tout·e·s qui <<- ~2>> * TODO: comme @@ -25097,11 +25103,11 @@ @@@@ @@@@ @@@@ @@@@ -@@@@GRAPH: purge_ponctuations2|ppc2 _ +@@@@GRAPH: prégraphe_gv1|pg_gv1 _ @@@@ @@@@ @@@@ @@@@