@@ -1,16 +1,21 @@ // GRAMMAR CHECKING ENGINE PLUGIN: Parsing functions for French language /* jshint esversion:6 */ /* jslint esversion:6 */ -function g_morphVC (dToken, sPattern, sNegPattern="") { - let nEnd = dToken["sValue"].lastIndexOf("-"); - if (dToken["sValue"].includes("-t-")) { - nEnd = nEnd - 2; +function g_morphVC (oToken, sPattern, sNegPattern="") { + let nEnd = oToken["sValue"].lastIndexOf("-"); + if (oToken["sValue"].count("-") > 1) { + if (oToken["sValue"].includes("-t-")) { + nEnd = nEnd - 2; + } + else if (oToken["sValue"].search(/-l(?:es?|a)-(?:[mt]oi|nous|leur)$|(?:[nv]ous|lui|leur)-en$/) != -1) { + nEnd = oToken["sValue"].slice(0,nEnd).lastIndexOf("-"); + } } - return g_morph(dToken, sPattern, sNegPattern, 0, nEnd, false); + return g_morph(oToken, sPattern, sNegPattern, 0, nEnd, false); } function rewriteSubject (s1, s2) { // s1 is supposed to be prn/patr/npr (M[12P]) if (s2 == "lui") {