Overview
Comment: | [core][fr] suggestions improvements |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | fr | core |
Files: | files | file ages | folders |
SHA3-256: |
ee36d992414864ad229ff2f63eddbf0d |
User & Date: | olr on 2021-01-14 19:51:10 |
Other Links: | manifest | tags |
Context
2021-01-14
| ||
19:51 | [fr] ajustements (tests), faux positifs check-in: e64973fcf5 user: olr tags: trunk, fr | |
19:51 | [core][fr] suggestions improvements check-in: ee36d99241 user: olr tags: trunk, fr, core | |
19:15 | [core][py] tests: sort untested rules check-in: a74cc5a919 user: olr tags: trunk, core | |
Changes
Modified gc_lang/fr/modules-js/gce_suggestions.js from [bf35ce0948] to [70c1996830].
︙ | ︙ | |||
14 15 16 17 18 19 20 | //// verbs function splitVerb (sVerb) { // renvoie le verbe et les pronoms séparément let iRight = sVerb.lastIndexOf("-"); let sSuffix = sVerb.slice(iRight); sVerb = sVerb.slice(0, iRight); | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | //// verbs function splitVerb (sVerb) { // renvoie le verbe et les pronoms séparément let iRight = sVerb.lastIndexOf("-"); let sSuffix = sVerb.slice(iRight); sVerb = sVerb.slice(0, iRight); if (sVerb.endsWith("-t") || sVerb.endsWith("-le") || sVerb.endsWith("-la") || sVerb.endsWith("-les") || sVerb.endsWith("-nous") || sVerb.endsWith("-vous") || sVerb.endsWith("-leur") || sVerb.endsWith("-lui")) { iRight = sVerb.lastIndexOf("-"); sSuffix = sVerb.slice(iRight) + sSuffix; sVerb = sVerb.slice(0, iRight); } return [sVerb, sSuffix]; } |
︙ | ︙ | |||
138 139 140 141 142 143 144 145 146 147 148 149 150 151 | } } if (aSugg.size > 0) { return Array.from(aSugg).join("|"); } return ""; } function suggVerbImpe (sFlex, bVC=false) { let sSfx; if (bVC) { [sFlex, sSfx] = splitVerb(sFlex); } let aSugg = new Set(); | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 170 171 172 173 174 175 176 177 178 179 180 | } } if (aSugg.size > 0) { return Array.from(aSugg).join("|"); } return ""; } function suggVerbFrom (sStem, sFlex, sWho="") { "conjugate <sStem> according to <sFlex> (and eventually <sWho>)" let aSugg = new Set(); for (let sMorph of gc_engine.oSpellChecker.getMorph(sFlex)) { let lTenses = [ ...sMorph.matchAll(/:(?:Y|I[pqsf]|S[pq]|K|P|Q)/g) ]; if (sWho) { for (let sTense of lTenses) { if (conj.hasConj(sStem, sTense, sWho)) { aSugg.add(conj.getConj(sStem, sTense, sWho)); } } } else { for (let sTense of lTenses) { for (let sWho of [ ...sMorph.matchAll(/:[123][sp]/g) ]) { if (conj.hasConj(sStem, sTense, sWho)) { aSugg.add(conj.getConj(sStem, sTense, sWho)); } } } } } if (aSugg.size > 0) { return Array.from(aSugg).join("|"); } return ""; } function suggVerbImpe (sFlex, bVC=false) { let sSfx; if (bVC) { [sFlex, sSfx] = splitVerb(sFlex); } let aSugg = new Set(); |
︙ | ︙ | |||
161 162 163 164 165 166 167 | if (conj._hasConjWithTags(tTags, ":E", ":2p")) { aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":2p")); } } } if (aSugg.size > 0) { if (bVC) { | | | 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 | if (conj._hasConjWithTags(tTags, ":E", ":2p")) { aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":2p")); } } } if (aSugg.size > 0) { if (bVC) { return Array.from(aSugg).map((sSugg) => { return ((sSugg.endsWith("e") || sSugg.endsWith("a")) && (sSfx == "-en" || sSfx == "-y")) ? sSugg + "s" + sSfx : sSugg + sSfx; }).join("|"); } return Array.from(aSugg).join("|"); } return ""; } function suggVerbInfi (sFlex) { |
︙ | ︙ | |||
588 589 590 591 592 593 594 | for (let e of conj.getSimil(sWord, sMorph, bSubst)) { aSugg.add(e); } } } if (aSugg.size > 0) { if (bVC) { | | | 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 | for (let e of conj.getSimil(sWord, sMorph, bSubst)) { aSugg.add(e); } } } if (aSugg.size > 0) { if (bVC) { return Array.from(aSugg).map((sSugg) => { return ((sSugg.endsWith("e") || sSugg.endsWith("a")) && (sSfx == "-en" || sSfx == "-y")) ? sSugg + "s" + sSfx : sSugg + sSfx; }).join("|"); } return Array.from(aSugg).join("|"); } return ""; } function suggCeOrCet (sWord) { |
︙ | ︙ |
Modified gc_lang/fr/modules/gce_suggestions.py from [cfe989f25d] to [7693ca0dd3].
︙ | ︙ | |||
8 9 10 11 12 13 14 | ## Verbs def splitVerb (sVerb): "renvoie le verbe et les pronoms séparément" iRight = sVerb.rfind("-") sSuffix = sVerb[iRight:] sVerb = sVerb[:iRight] | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ## Verbs def splitVerb (sVerb): "renvoie le verbe et les pronoms séparément" iRight = sVerb.rfind("-") sSuffix = sVerb[iRight:] sVerb = sVerb[:iRight] if sVerb.endswith(("-t", "-le", "-la", "-les", "-nous", "-vous", "-leur", "-lui")): iRight = sVerb.rfind("-") sSuffix = sVerb[iRight:] + sSuffix sVerb = sVerb[:iRight] return sVerb, sSuffix def suggVerb (sFlex, sWho, funcSugg2=None, bVC=False): |
︙ | ︙ | |||
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | for sStem in _oSpellChecker.getLemma(sFlex): if conj.hasConj(sStem, sTense, sWho): aSugg.add(conj.getConj(sStem, sTense, sWho)) if aSugg: return "|".join(aSugg) return "" def suggVerbImpe (sFlex, bVC=False): "change <sFlex> to a verb at imperative form" if bVC: sFlex, sSfx = splitVerb(sFlex) aSugg = set() for sStem in _oSpellChecker.getLemma(sFlex): tTags = conj._getTags(sStem) if tTags: if conj._hasConjWithTags(tTags, ":E", ":2s"): aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":2s")) if conj._hasConjWithTags(tTags, ":E", ":1p"): aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":1p")) if conj._hasConjWithTags(tTags, ":E", ":2p"): aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":2p")) if aSugg: if bVC: | > > > > > > > > > > > > > > > > > > > | | 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | for sStem in _oSpellChecker.getLemma(sFlex): if conj.hasConj(sStem, sTense, sWho): aSugg.add(conj.getConj(sStem, sTense, sWho)) if aSugg: return "|".join(aSugg) return "" def suggVerbFrom (sStem, sFlex, sWho=""): "conjugate <sStem> according to <sFlex> (and eventually <sWho>)" aSugg = set() for sMorph in _oSpellChecker.getMorph(sFlex): lTenses = [ m.group(0) for m in re.finditer(":(?:Y|I[pqsf]|S[pq]|K|P|Q)", sMorph) ] if sWho: for sTense in lTenses: if conj.hasConj(sStem, sTense, sWho): aSugg.add(conj.getConj(sStem, sTense, sWho)) else: for sTense in lTenses: for sWho in [ m.group(0) for m in re.finditer(":[123][sp]", sMorph) ]: if conj.hasConj(sStem, sTense, sWho): aSugg.add(conj.getConj(sStem, sTense, sWho)) if aSugg: return "|".join(aSugg) return "" def suggVerbImpe (sFlex, bVC=False): "change <sFlex> to a verb at imperative form" if bVC: sFlex, sSfx = splitVerb(sFlex) aSugg = set() for sStem in _oSpellChecker.getLemma(sFlex): tTags = conj._getTags(sStem) if tTags: if conj._hasConjWithTags(tTags, ":E", ":2s"): aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":2s")) if conj._hasConjWithTags(tTags, ":E", ":1p"): aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":1p")) if conj._hasConjWithTags(tTags, ":E", ":2p"): aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":2p")) if aSugg: if bVC: aSugg = list(map(lambda sSug: sSug + "s" + sSfx if (sSfx == "-en" or sSfx == "-y") and sSug.endswith(("e", "a")) else sSug + sSfx, aSugg)) return "|".join(aSugg) return "" def suggVerbInfi (sFlex): "returns infinitive forms of <sFlex>" return "|".join([ sStem for sStem in _oSpellChecker.getLemma(sFlex) if conj.isVerb(sStem) ]) |
︙ | ︙ | |||
452 453 454 455 456 457 458 | aSugg = phonet.selectSimil(sWord, sPattern) if not aSugg or not bSubst: for sMorph in _oSpellChecker.getMorph(sWord): aSugg.update(conj.getSimil(sWord, sMorph, bSubst)) break if aSugg: if bVC: | | | 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 | aSugg = phonet.selectSimil(sWord, sPattern) if not aSugg or not bSubst: for sMorph in _oSpellChecker.getMorph(sWord): aSugg.update(conj.getSimil(sWord, sMorph, bSubst)) break if aSugg: if bVC: aSugg = list(map(lambda sSug: sSug + "s" + sSfx if (sSfx == "-en" or sSfx == "-y") and sSug.endswith(("e", "a")) else sSug + sSfx, aSugg)) return "|".join(aSugg) return "" def suggCeOrCet (sWord): "suggest “ce” or “cet” or both according to the first letter of <sWord>" if re.match("(?i)[aeéèêiouyâîï]", sWord): |
︙ | ︙ |
Modified gc_lang/fr/webext/manifest.json from [9dc86ec3bd] to [a3e5cd8209].
1 2 3 4 5 6 7 8 9 | { "manifest_version": 2, "name": "Grammalecte [fr]", "short_name": "Grammalecte [fr]", "version": "${version}", "applications": { "gecko": { "id": "French-GC@grammalecte.net", | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | { "manifest_version": 2, "name": "Grammalecte [fr]", "short_name": "Grammalecte [fr]", "version": "${version}", "applications": { "gecko": { "id": "French-GC@grammalecte.net", "strict_min_version": "67.0" } }, "minimum_chrome_version": "73", "author": "Olivier R.", "homepage_url": "https://grammalecte.net/", "description": "Correcteur grammatical, orthographique et typographique pour le français.", "default_locale": "fr", |
︙ | ︙ |