Index: gc_core/py/lang_core/tests_core.py ================================================================== --- gc_core/py/lang_core/tests_core.py +++ gc_core/py/lang_core/tests_core.py @@ -81,12 +81,10 @@ if m: sLine = sLine[m.end():] sOption = m.group(1) if "->>" in sLine: sErrorText, sExceptedSuggs = self._splitTestLine(sLine) - if sExceptedSuggs.startswith('"') and sExceptedSuggs.endswith('"'): - sExceptedSuggs = sExceptedSuggs[1:-1] else: sErrorText = sLine.strip() sExceptedSuggs = "" sExpectedErrors = self._getExpectedErrors(sErrorText) sTextToCheck = sErrorText.replace("}}", "").replace("{{", "") @@ -121,11 +119,14 @@ echo(sRule) echo(" [{} untested rules]".format(len(aUntestedRules))) def _splitTestLine (self, sLine): sText, sSugg = sLine.split("->>") - return (sText.strip(), sSugg.strip()) + sSugg = sSugg.strip() + if sSugg.startswith('"') and sSugg.endswith('"'): + sSugg = sSugg[1:-1] + return (sText.strip(), sSugg) def _getFoundErrors (self, sLine, sOption): if sOption: gc_engine.setOption(sOption, True) aErrs = gc_engine.parse(sLine) @@ -133,11 +134,11 @@ else: aErrs = gc_engine.parse(sLine) sRes = " " * len(sLine) sListErr = "" lAllSugg = [] - for dErr in aErrs: + for dErr in sorted(aErrs, key=lambda d: d["nStart"]): sRes = sRes[:dErr["nStart"]] + "~" * (dErr["nEnd"] - dErr["nStart"]) + sRes[dErr["nEnd"]:] sListErr += " * {sLineId} / {sRuleId} at {nStart}:{nEnd}\n".format(**dErr) lAllSugg.append("|".join(dErr["aSuggestions"])) self._aTestedRules.add(dErr["sRuleId"].rstrip("0123456789")) # test messages Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -726,19 +726,19 @@ 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'’]) @@* + [\w.?!…,](['’]['’])(?![\w'’]) @@* <<- -1>> " »|”" && Guillemets typographiques fermants. TEST: {{''}}Ça{{”}} recommence. ->> « |“||| TEST: Le {{''}}grand{{”}} homme. ->> « |“||| -TEST: Le {{“}}grand{{''}} homme. ->> " »|”|||" +TEST: Le {{“}}grand{{''}} homme. ->> ||| »|” __/typo(typo_guillemets_typographiques_simples_ouvrants)__ (?:^|[ –—-])(['’])(?=\w) @@* <<- -1>> “|‘|‹ && Guillemets typographiques ouvrants. @@ -1323,11 +1323,11 @@ TEST: C’est {{«}}stupide{{”}}. TEST: Quel {{“}}emmerdeur{{»}}, ce gars-là. __/typo(typo_cohérence_guillemets_doubles_ouvrants)__ - (“)[^”’“«]+?(’)(?!\w) @@0,$ + (“)[^”’“«]+?(’)(?![\w'’]) @@0,$ <<- not before("\\w$") -1>> "‘" && Guillemet ouvrant différent du guillemet fermant (’). <<- -2>> ” && Guillemet fermant différent du guillemet ouvrant (“). __/typo(typo_cohérence_guillemets_doubles_fermants)__ (‘)[^’“«]+?(”) @@0,$ <<- not before("\\w$") -1>> "“" && Guillemet ouvrant différent du guillemet fermant (”). @@ -27096,11 +27096,11 @@ [|,|(|et|ou] *WORD [les|le|la|lui|nous|vous|leur] [|,|)] <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":(?:V1.*:[YQ]|Iq.*:[123]s)") -2:3>> =suggVerbTense(\2, ":E", ":2p") + "-" + \3 && Confusion probable. Pour l’impératif, écrivez : TEST: {{Donner moi}} une chance ->> Donnez-moi -TEST: {{donner la}} et oublie-moi. ->> là|||donnez-la +TEST: {{donner la}} et oublie-moi. ->> donnez-la|||là TEST: {{prenait les}} ou volez-les ->> prenez-les TEST: je vous en prie, {{prenais moi}} avec vous. ->> prenez-moi TEST: {{avançait moi}} de l’argent ->> avancez-moi TEST: {{filé moi}} du fric, bon sang ! ->> filez-moi TEST: {{Données lui}} ça. ->> Donnez-lui