Index: gc_lang/fr/modules-js/gce_suggestions.js ================================================================== --- gc_lang/fr/modules-js/gce_suggestions.js +++ gc_lang/fr/modules-js/gce_suggestions.js @@ -9,11 +9,28 @@ } //// verbs -function suggVerb (sFlex, sWho, funcSugg2=null) { +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")) { + iRight = sVerb.lastIndexOf("-"); + sSuffix = sVerb.slice(iRight) + sSuffix; + sVerb = sVerb.slice(0, iRight); + } + return [sVerb, sSuffix]; +} + +function suggVerb (sFlex, sWho, funcSugg2=null, bVC=false) { + let sSfx; + if (bVC) { + [sFlex, sSfx] = splitVerb(sFlex); + } let aSugg = new Set(); for (let sStem of _oSpellChecker.getLemma(sFlex)) { let tTags = conj._getTags(sStem); if (tTags) { // we get the tense @@ -51,10 +68,13 @@ if (aSugg2.size > 0) { aSugg.add(aSugg2); } } if (aSugg.size > 0) { + if (bVC) { + return Array.from(aSugg).map((sSugg) => { return sSugg + sSfx; }).join("|"); + } return Array.from(aSugg).join("|"); } return ""; } @@ -119,11 +139,15 @@ return Array.from(aSugg).join("|"); } return ""; } -function suggVerbImpe (sFlex) { +function suggVerbImpe (sFlex, bVC=false) { + let sSfx; + if (bVC) { + [sFlex, sSfx] = splitVerb(sFlex); + } let aSugg = new Set(); for (let sStem of _oSpellChecker.getLemma(sFlex)) { let tTags = conj._getTags(sStem); if (tTags) { if (conj._hasConjWithTags(tTags, ":E", ":2s")) { @@ -136,10 +160,13 @@ aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":2p")); } } } if (aSugg.size > 0) { + if (bVC) { + return Array.from(aSugg).map((sSugg) => { return sSugg + sSfx; }).join("|"); + } return Array.from(aSugg).join("|"); } return ""; } @@ -466,11 +493,11 @@ return ""; } function switchPlural (sFlex) { let aSugg = new Set(); - for (let sMorph of _oSpellChecker.getMorph(sFlex)) { + for (let sMorph of _oSpellChecker.getMorph(sFlex)) { if (sMorph.includes(":s")) { aSugg.add(suggPlur(sFlex)); } else if (sMorph.includes(":p")) { aSugg.add(suggSing(sFlex)); } @@ -483,19 +510,26 @@ function hasSimil (sWord, sPattern=null) { return phonet.hasSimil(sWord, sPattern); } -function suggSimil (sWord, sPattern=null, bSubst=false) { +function suggSimil (sWord, sPattern=null, bSubst=false, bVC=false) { // return list of words phonetically similar to sWord and whom POS is matching sPattern + let sSfx; + if (bVC) { + [sWord, sSfx] = splitVerb(sWord); + } let aSugg = phonet.selectSimil(sWord, sPattern); for (let sMorph of _oSpellChecker.getMorph(sWord)) { 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 + sSfx; }).join("|"); + } return Array.from(aSugg).join("|"); } return ""; }