Index: gc_lang/fr/webext/background.js ================================================================== --- gc_lang/fr/webext/background.js +++ gc_lang/fr/webext/background.js @@ -215,19 +215,19 @@ // selected text case "rightClickGCSelectedText": sendCommandToTab("rightClickGCSelectedText", xTab.id); xGCEWorker.postMessage({ sCommand: "parseAndSpellcheck", - dParam: {sText: xInfo.selectionText.normalize("NFC"), sCountry: "FR", bDebug: false, bContext: false}, + dParam: {sText: xInfo.selectionText, sCountry: "FR", bDebug: false, bContext: false}, dInfo: {iReturnPort: xTab.id} }); break; case "rightClickLxgSelectedText": sendCommandToTab("rightClickLxgSelectedText", xTab.id); xGCEWorker.postMessage({ sCommand: "getListOfTokens", - dParam: {sText: xInfo.selectionText.normalize("NFC")}, + dParam: {sText: xInfo.selectionText}, dInfo: {iReturnPort: xTab.id} }); break; // conjugueur case "conjugueur_window": Index: gc_lang/fr/webext/content_scripts/init.js ================================================================== --- gc_lang/fr/webext/content_scripts/init.js +++ gc_lang/fr/webext/content_scripts/init.js @@ -192,11 +192,11 @@ let sPageText = document.body.innerText; let nPos = sPageText.indexOf("__grammalecte_panel__"); if (nPos >= 0) { sPageText = sPageText.slice(0, nPos); } - return sPageText.normalize("NFC"); + return sPageText; }, createNode: function (sType, oAttr, oDataset=null) { try { let xNode = document.createElement(sType); @@ -251,11 +251,11 @@ if (oGrammalecte.xRightClickedNode !== null) { oGrammalecte.startGCPanel(oGrammalecte.xRightClickedNode); sText = (oGrammalecte.xRightClickedNode.tagName == "TEXTAREA") ? oGrammalecte.xRightClickedNode.value : oGrammalecte.xRightClickedNode.innerText; xGrammalectePort.postMessage({ sCommand: "parseAndSpellcheck", - dParam: {sText: sText.normalize("NFC"), sCountry: "FR", bDebug: false, bContext: false}, + dParam: {sText: sText, sCountry: "FR", bDebug: false, bContext: false}, dInfo: {sTextAreaId: oGrammalecte.xRightClickedNode.id} }); } else { oGrammalecte.showMessage("Erreur. Le node sur lequel vous avez cliqué n’a pas pu être identifié. Sélectionnez le texte à corriger et relancez le correcteur via le menu contextuel."); } @@ -277,11 +277,11 @@ if (oGrammalecte.xRightClickedNode !== null) { oGrammalecte.startLxgPanel(); sText = (oGrammalecte.xRightClickedNode.tagName == "TEXTAREA") ? oGrammalecte.xRightClickedNode.value : oGrammalecte.xRightClickedNode.innerText; xGrammalectePort.postMessage({ sCommand: "getListOfTokens", - dParam: {sText: sText.normalize("NFC")}, + dParam: {sText: sText}, dInfo: {sTextAreaId: oGrammalecte.xRightClickedNode.id} }); } else { oGrammalecte.showMessage("Erreur. Le node sur lequel vous avez cliqué n’a pas pu être identifié. Sélectionnez le texte à analyser et relancez le lexicographe via le menu contextuel."); } Index: gc_lang/fr/webext/content_scripts/panel_gc.js ================================================================== --- gc_lang/fr/webext/content_scripts/panel_gc.js +++ gc_lang/fr/webext/content_scripts/panel_gc.js @@ -453,11 +453,11 @@ _loadText () { let sText = (this.bTextArea) ? this.xNode.value : this.xNode.innerText; let i = 0; let iStart = 0; let iEnd = 0; - sText = sText.replace("\r\n", "\n").replace("\r", "\n").normalize("NFC"); + sText = sText.replace(/\r\n/g, "\n").replace(/\r/g, "\n").replace(/­/g, "").normalize("NFC"); while ((iEnd = sText.indexOf("\n", iStart)) !== -1) { this.dParagraph.set(i, sText.slice(iStart, iEnd)); i++; iStart = iEnd+1; } Index: gc_lang/fr/webext/gce_worker.js ================================================================== --- gc_lang/fr/webext/gce_worker.js +++ gc_lang/fr/webext/gce_worker.js @@ -181,19 +181,21 @@ } } function parse (sText, sCountry, bDebug, bContext, dInfo={}) { + sText = sText.replace(/­/g, "").normalize("NFC"); for (let sParagraph of text.getParagraph(sText)) { let aGrammErr = gc_engine.parse(sParagraph, sCountry, bDebug, bContext); postMessage(createResponse("parse", aGrammErr, dInfo, false)); } postMessage(createResponse("parse", null, dInfo, true)); } function parseAndSpellcheck (sText, sCountry, bDebug, bContext, dInfo={}) { let i = 0; + sText = sText.replace(/­/g, "").normalize("NFC"); for (let sParagraph of text.getParagraph(sText)) { let aGrammErr = gc_engine.parse(sParagraph, sCountry, bDebug, bContext); let aSpellErr = oTokenizer.getSpellingErrors(sParagraph, oDict); postMessage(createResponse("parseAndSpellcheck", {sParagraph: sParagraph, iParaNum: i, aGrammErr: aGrammErr, aSpellErr: aSpellErr}, dInfo, false)); i += 1; @@ -200,10 +202,11 @@ } postMessage(createResponse("parseAndSpellcheck", null, dInfo, true)); } function parseAndSpellcheck1 (sParagraph, sCountry, bDebug, bContext, dInfo={}) { + sParagraph = sParagraph.replace(/­/g, "").normalize("NFC"); let aGrammErr = gc_engine.parse(sParagraph, sCountry, bDebug, bContext); let aSpellErr = oTokenizer.getSpellingErrors(sParagraph, oDict); postMessage(createResponse("parseAndSpellcheck1", {sParagraph: sParagraph, aGrammErr: aGrammErr, aSpellErr: aSpellErr}, dInfo, true)); } @@ -245,10 +248,11 @@ function textToTest (sText, sCountry, bDebug, bContext, dInfo={}) { if (!gc_engine) { postMessage(createResponse("textToTest", "# Grammar checker not loaded.", dInfo, true)); return; } + sText = sText.replace(/­/g, "").normalize("NFC"); let aGrammErr = gc_engine.parse(sText, sCountry, bDebug, bContext); let sMsg = ""; for (let oErr of aGrammErr) { sMsg += text.getReadableError(oErr) + "\n"; } @@ -294,10 +298,11 @@ // Lexicographer function getListOfTokens (sText, dInfo={}) { try { + sText = sText.replace(/­/g, "").normalize("NFC"); for (let sParagraph of text.getParagraph(sText)) { if (sParagraph.trim() !== "") { let aElem = []; let aRes = null; for (let oToken of oTokenizer.genTokens(sParagraph)) {