Index: gc_core/js/lang_core/gc_engine.js ================================================================== --- gc_core/js/lang_core/gc_engine.js +++ gc_core/js/lang_core/gc_engine.js @@ -8,23 +8,17 @@ ${regex} ${map} if (typeof(require) !== 'undefined') { - var helpers = require("resource://grammalecte/graphspell/helpers.js"); + //var helpers = require("resource://grammalecte/graphspell/helpers.js"); var gc_options = require("resource://grammalecte/${lang}/gc_options.js"); var gc_rules = require("resource://grammalecte/${lang}/gc_rules.js"); var cregex = require("resource://grammalecte/${lang}/cregex.js"); var text = require("resource://grammalecte/text.js"); - var echo = helpers.echo; -} -else if (typeof(console) !== "undefined") { - var echo = function (o) { console.log(o); return true; }; -} -else { - var echo = function () { return true; } -} +} + function capitalizeArray (aArray) { // can’t map on user defined function?? let aNew = []; for (let i = 0; i < aArray.length; i = i + 1) { @@ -70,11 +64,11 @@ if (sNew) { sText = sNew; } } catch (e) { - helpers.logerror(e); + console.error(e); } // cleanup if (sText.includes(" ")) { sText = sText.replace(/ /g, ' '); // nbsp @@ -91,17 +85,16 @@ // parse sentence for (let [iStart, iEnd] of this._getSentenceBoundaries(sText)) { if (4 < (iEnd - iStart) < 2000) { dDA.clear(); - //helpers.echo(sText.slice(iStart, iEnd)); try { [, errs] = this._proofread(sText.slice(iStart, iEnd), sAlt.slice(iStart, iEnd), iStart, false, dDA, dPriority, sCountry, bDebug, bContext); dErrors.gl_update(errs); } catch (e) { - helpers.logerror(e); + console.error(e); } } } return Array.from(dErrors.values()); }, @@ -133,61 +126,61 @@ for (let [zRegex, bUppercase, sLineId, sRuleId, nPriority, lActions, lGroups, lNegLookBefore] of lRuleGroup) { if (!_aIgnoredRules.has(sRuleId)) { while ((m = zRegex.gl_exec2(s, lGroups, lNegLookBefore)) !== null) { bCondMemo = null; /*if (bDebug) { - helpers.echo(">>>> Rule # " + sLineId + " - Text: " + s + " opt: "+ sOption); + console.log(">>>> Rule # " + sLineId + " - Text: " + s + " opt: "+ sOption); }*/ for (let [sFuncCond, cActionType, sWhat, ...eAct] of lActions) { // action in lActions: [ condition, action type, replacement/suggestion/action[, iGroup[, message, URL]] ] try { - //helpers.echo(oEvalFunc[sFuncCond]); + //console.log(oEvalFunc[sFuncCond]); bCondMemo = (!sFuncCond || oEvalFunc[sFuncCond](s, sx, m, dDA, sCountry, bCondMemo)); if (bCondMemo) { switch (cActionType) { case "-": // grammar error - //helpers.echo("-> error detected in " + sLineId + "\nzRegex: " + zRegex.source); + //console.log("-> error detected in " + sLineId + "\nzRegex: " + zRegex.source); nErrorStart = nOffset + m.start[eAct[0]]; if (!dErrs.has(nErrorStart) || nPriority > dPriority.get(nErrorStart)) { dErrs.set(nErrorStart, this._createError(s, sx, sWhat, nOffset, m, eAct[0], sLineId, sRuleId, bUppercase, eAct[1], eAct[2], bIdRule, sOption, bContext)); dPriority.set(nErrorStart, nPriority); } break; case "~": // text processor - //helpers.echo("-> text processor by " + sLineId + "\nzRegex: " + zRegex.source); + //console.log("-> text processor by " + sLineId + "\nzRegex: " + zRegex.source); s = this._rewrite(s, sWhat, eAct[0], m, bUppercase); bChange = true; if (bDebug) { - helpers.echo("~ " + s + " -- " + m[eAct[0]] + " # " + sLineId); + console.log("~ " + s + " -- " + m[eAct[0]] + " # " + sLineId); } break; case "=": // disambiguation - //helpers.echo("-> disambiguation by " + sLineId + "\nzRegex: " + zRegex.source); + //console.log("-> disambiguation by " + sLineId + "\nzRegex: " + zRegex.source); oEvalFunc[sWhat](s, m, dDA); if (bDebug) { - helpers.echo("= " + m[0] + " # " + sLineId + "\nDA: " + dDA.gl_toString()); + console.log("= " + m[0] + " # " + sLineId + "\nDA: " + dDA.gl_toString()); } break; case ">": // we do nothing, this test is just a condition to apply all following actions break; default: - helpers.echo("# error: unknown action at " + sLineId); + console.log("# error: unknown action at " + sLineId); } } else { if (cActionType == ">") { break; } } } catch (e) { - helpers.echo(s); - helpers.echo("# line id: " + sLineId + "\n# rule id: " + sRuleId); - helpers.logerror(e); + console.log(s); + console.log("# line id: " + sLineId + "\n# rule id: " + sRuleId); + console.error(e); } } } } } @@ -267,11 +260,11 @@ } } else { sNew = sRepl.gl_expand(m); sNew = sNew + " ".repeat(ln-sNew.length); } - //helpers.echo("\n"+s+"\nstart: "+m.start[iGroup]+" end:"+m.end[iGroup]) + //console.log("\n"+s+"\nstart: "+m.start[iGroup]+" end:"+m.end[iGroup]) return s.slice(0, m.start[iGroup]) + sNew + s.slice(m.end[iGroup]); }, // Actions on rules @@ -304,11 +297,11 @@ } } } } catch (e) { - helpers.logerror(e); + console.error(e); } }, _getRules: function (bParagraph) { if (!bParagraph) { @@ -329,11 +322,11 @@ } _sAppContext = sContext; _dOptions = gc_options.getOptions(sContext).gl_shallowCopy(); // duplication necessary, to be able to reset to default } catch (e) { - helpers.logerror(e); + console.error(e); } }, getSpellChecker: function () { return _oSpellChecker; @@ -373,69 +366,69 @@ } function displayInfo (dDA, aWord) { // for debugging: info of word if (!aWord) { - helpers.echo("> nothing to find"); + console.log("> nothing to find"); return true; } if (!_dAnalyses.has(aWord[1]) && !_storeMorphFromFSA(aWord[1])) { - helpers.echo("> not in FSA"); + console.log("> not in FSA"); return true; } if (dDA.has(aWord[0])) { - helpers.echo("DA: " + dDA.get(aWord[0])); + console.log("DA: " + dDA.get(aWord[0])); } - helpers.echo("FSA: " + _dAnalyses.get(aWord[1])); + console.log("FSA: " + _dAnalyses.get(aWord[1])); return true; } function _storeMorphFromFSA (sWord) { // retrieves morphologies list from _oSpellChecker -> _dAnalyses - //helpers.echo("register: "+sWord + " " + _oSpellChecker.getMorph(sWord).toString()) + //console.log("register: "+sWord + " " + _oSpellChecker.getMorph(sWord).toString()) _dAnalyses.set(sWord, _oSpellChecker.getMorph(sWord)); return !!_dAnalyses.get(sWord); } function morph (dDA, aWord, sPattern, bStrict=true, bNoWord=false) { // analyse a tuple (position, word), return true if sPattern in morphologies (disambiguation on) if (!aWord) { - //helpers.echo("morph: noword, returns " + bNoWord); + //console.log("morph: noword, returns " + bNoWord); return bNoWord; } - //helpers.echo("aWord: "+aWord.toString()); + //console.log("aWord: "+aWord.toString()); if (!_dAnalyses.has(aWord[1]) && !_storeMorphFromFSA(aWord[1])) { return false; } let lMorph = dDA.has(aWord[0]) ? dDA.get(aWord[0]) : _dAnalyses.get(aWord[1]); - //helpers.echo("lMorph: "+lMorph.toString()); + //console.log("lMorph: "+lMorph.toString()); if (lMorph.length === 0) { return false; } - //helpers.echo("***"); + //console.log("***"); if (bStrict) { return lMorph.every(s => (s.search(sPattern) !== -1)); } return lMorph.some(s => (s.search(sPattern) !== -1)); } function morphex (dDA, aWord, sPattern, sNegPattern, bNoWord=false) { // analyse a tuple (position, word), returns true if not sNegPattern in word morphologies and sPattern in word morphologies (disambiguation on) if (!aWord) { - //helpers.echo("morph: noword, returns " + bNoWord); + //console.log("morph: noword, returns " + bNoWord); return bNoWord; } - //helpers.echo("aWord: "+aWord.toString()); + //console.log("aWord: "+aWord.toString()); if (!_dAnalyses.has(aWord[1]) && !_storeMorphFromFSA(aWord[1])) { return false; } let lMorph = dDA.has(aWord[0]) ? dDA.get(aWord[0]) : _dAnalyses.get(aWord[1]); - //helpers.echo("lMorph: "+lMorph.toString()); + //console.log("lMorph: "+lMorph.toString()); if (lMorph.length === 0) { return false; } - //helpers.echo("***"); + //console.log("***"); // check negative condition if (lMorph.some(s => (s.search(sNegPattern) !== -1))) { return false; } // search sPattern @@ -530,11 +523,11 @@ return false; } return zPattern.test(s); } catch (e) { - helpers.logerror(e); + console.error(e); } return false; } function look_chk1 (dDA, s, nOffset, zPattern, sPatternGroup1, sNegPatternGroup1=null) { @@ -546,15 +539,15 @@ try { let sWord = m[1]; let nPos = m.start[1] + nOffset; if (sNegPatternGroup1) { return morphex(dDA, [nPos, sWord], sPatternGroup1, sNegPatternGroup1); - } + } return morph(dDA, [nPos, sWord], sPatternGroup1, false); } catch (e) { - helpers.logerror(e); + console.error(e); return false; } } Index: gc_core/js/tests.js ================================================================== --- gc_core/js/tests.js +++ gc_core/js/tests.js @@ -76,11 +76,11 @@ } } bShowUntested = true; } catch (e) { - helpers.logerror(e); + console.error(e); } if (bShowUntested) { i = 0; for (let [sOpt, sLineId, sRuleId] of this.gce.listRules()) { @@ -118,11 +118,11 @@ } } return sRes; } catch (e) { - helpers.logerror(e); + console.error(e); } return " ".repeat(sLine.length); } _getFoundErrors (sLine, bDebug, sOption) { @@ -143,11 +143,11 @@ this._aRuleTested.add(dErr["sLineId"]); } return [sRes, sListErr]; } catch (e) { - helpers.logerror(e); + console.error(e); } return [" ".repeat(sLine.length), ""]; } } Index: gc_core/js/text.js ================================================================== --- gc_core/js/text.js +++ gc_core/js/text.js @@ -2,15 +2,10 @@ /*jslint esversion: 6*/ /*global require,exports*/ "use strict"; - -if (typeof(require) !== 'undefined') { - var helpers = require("resource://grammalecte/graphspell/helpers.js"); -} - var text = { getParagraph: function* (sText, sSepParagraph = "\n") { // generator: returns paragraphs of text let iStart = 0; @@ -55,11 +50,11 @@ sResult += "\n > URL: " + oErr["URL"]; } return sResult; } catch (e) { - helpers.logerror(e); + console.error(e); return "\n# Error. Data: " + oErr.toString(); } } }; 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 @@ -570,11 +570,11 @@ return ""; } return "NF " + m[1].toUpperCase().replace(/ /g, " ").replace(/-/g, " ") + " " + m[2].replace(/\//g, "‑").replace(/-/g, "‑"); } catch (e) { - helpers.logerror(e); + console.error(e); return "# erreur #"; } } function undoLigature (c) { Index: gc_lang/fr/modules-js/lexicographe.js ================================================================== --- gc_lang/fr/modules-js/lexicographe.js +++ gc_lang/fr/modules-js/lexicographe.js @@ -7,14 +7,10 @@ ${string} ${map} -if (typeof (require) !== 'undefined') { - var helpers = require("resource://grammalecte/graphspell/helpers.js"); -} - const _dTag = new Map([ [':N', [" nom,", "Nom"]], [':A', [" adjectif,", "Adjectif"]], [':M1', [" prénom,", "Prénom"]], [':M2', [" patronyme,", "Patronyme, matronyme, nom de famille…"]], @@ -85,11 +81,11 @@ [':C', [" conjonction,", "Conjonction"]], [':Ĉ', [" conjonction (él.),", "Conjonction (élément)"]], [':Cc', [" conjonction de coordination,", "Conjonction de coordination"]], [':Cs', [" conjonction de subordination,", "Conjonction de subordination"]], [':Ĉs', [" conjonction de subordination (él.),", "Conjonction de subordination (élément)"]], - + [':Ñ', [" locution nominale (él.),", "Locution nominale (élément)"]], [':Â', [" locution adjectivale (él.),", "Locution adjectivale (élément)"]], [':Ṽ', [" locution verbale (él.),", "Locution verbale (élément)"]], [':Ŵ', [" locution adverbiale (él.),", "Locution adverbiale (élément)"]], [':Ŕ', [" locution prépositive (él.),", "Locution prépositive (élément)"]], @@ -355,11 +351,11 @@ }; } break; } } catch (e) { - helpers.logerror(e); + console.error(e); } return null; } _getMorph (sWord) { Index: gc_lang/fr/tb/worker/gce_worker.js ================================================================== --- gc_lang/fr/tb/worker/gce_worker.js +++ gc_lang/fr/tb/worker/gce_worker.js @@ -61,11 +61,10 @@ helpers = require("resource://grammalecte/graphspell/helpers.js"); text = require("resource://grammalecte/text.js"); tkz = require("resource://grammalecte/graphspell/tokenizer.js"); //lxg = require("resource://grammalecte/fr/lexicographe.js"); oTokenizer = new tkz.Tokenizer("fr"); - //helpers.setLogOutput(worker.log); gce.load(sContext); oSpellChecker = gce.getSpellChecker(); if (sGCOptions !== "") { gce.setOptions(helpers.objectToMap(JSON.parse(sGCOptions))); } Index: gc_lang/fr/webext/gce_worker.js ================================================================== --- gc_lang/fr/webext/gce_worker.js +++ gc_lang/fr/webext/gce_worker.js @@ -187,11 +187,11 @@ // we always retrieve options from the gc_engine, for setOptions filters obsolete options dOptions = helpers.mapToObject(gc_engine.getOptions()); postMessage(createResponse("init", dOptions, dInfo, true)); } catch (e) { - helpers.logerror(e); + console.error(e); postMessage(createResponse("init", createErrorResult(e, "init failed"), dInfo, true, true)); } } @@ -392,9 +392,9 @@ } } postMessage(createResponse("getListOfTokens", null, dInfo, true)); } catch (e) { - helpers.logerror(e); + console.error(e); postMessage(createResponse("getListOfTokens", createErrorResult(e, "no tokens"), dInfo, true, true)); } } Index: graphspell-js/helpers.js ================================================================== --- graphspell-js/helpers.js +++ graphspell-js/helpers.js @@ -3,43 +3,13 @@ /*jslint esversion: 6*/ /*global console,require,exports,XMLHttpRequest*/ "use strict"; -// In Firefox, there is no console.log in PromiseWorker, but there is worker.log. -// In Thunderbird, you can’t access to console directly. So it’s required to pass a log function. -let funcOutput = null; var helpers = { - setLogOutput: function (func) { - // probably obsolete now, as console.log seems to work everywhere (at last!) - funcOutput = func; - }, - - echo: function (obj) { - // probably obsolete now, as console.log seems to work everywhere (at last!) - if (funcOutput !== null) { - funcOutput(obj); - } else { - console.log(obj); - } - return true; - }, - - logerror: function (e, bStack=false) { - let sMsg = "\n" + e.fileName + "\n" + e.name + "\nline: " + e.lineNumber + "\n" + e.message; - if (bStack) { - sMsg += "\n--- Stack ---\n" + e.stack; - } - if (funcOutput !== null) { - funcOutput(sMsg); - } else { - console.error(sMsg); - } - }, - inspect: function (o) { let sMsg = "__inspect__: " + typeof o; for (let sParam in o) { sMsg += "\n" + sParam + ": " + o.sParam; } @@ -89,13 +59,10 @@ } }; if (typeof(exports) !== 'undefined') { - exports.setLogOutput = helpers.setLogOutput; - exports.echo = helpers.echo; - exports.logerror = helpers.logerror; exports.inspect = helpers.inspect; exports.loadFile = helpers.loadFile; exports.objectToMap = helpers.objectToMap; exports.mapToObject = helpers.mapToObject; } Index: graphspell-js/str_transform.js ================================================================== --- graphspell-js/str_transform.js +++ graphspell-js/str_transform.js @@ -76,11 +76,11 @@ } } return matrix[nLen1][nLen2]; } catch (e) { - helpers.logerror(e); + console.error(e); } }, distanceDamerauLevenshtein: function (s1, s2) { // distance of Damerau-Levenshtein between and @@ -123,11 +123,11 @@ sd[s1[i-1]] = i; } return matrix[nLen1+1][nLen2+1]; } catch (e) { - helpers.logerror(e); + console.error(e); } }, showDistance (s1, s2) { console.log(`Distance: ${s1} / ${s2} = ${this.distanceDamerauLevenshtein(s1, s2)})`); @@ -162,21 +162,21 @@ if (sSfxCode == "0") { return sWord; } return sSfxCode[0] == '0' ? sWord + sSfxCode.slice(1) : sWord.slice(0, -(sSfxCode.charCodeAt(0)-48)) + sSfxCode.slice(1); }, - + // Prefix and suffix defineAffixCode: function (sFlex, sStem) { /* UNTESTED! Returns a string defining how to get stem from flexion. Examples: "0" if stem = flexion "stem" if no common substring "n(pfx)/m(sfx)" with n and m: chars with numeric meaning, "0" = 0, "1" = 1, ... ":" = 10, etc. (See ASCII table.) Says how many letters to strip from flexion. - pfx [optional]: string to add before the flexion + pfx [optional]: string to add before the flexion sfx [optional]: string to add after the flexion */ if (sFlex == sStem) { return "0"; } Index: graphspell-js/tokenizer.js ================================================================== --- graphspell-js/tokenizer.js +++ graphspell-js/tokenizer.js @@ -3,15 +3,10 @@ /*jslint esversion: 6*/ /*global require,exports*/ "use strict"; - -if (typeof(require) !== 'undefined') { - var helpers = require("resource://grammalecte/graphspell/helpers.js"); -} - const aTkzPatterns = { // All regexps must start with ^. "default": [ @@ -78,11 +73,11 @@ nCut = m[0].length; break; } } catch (e) { - helpers.logerror(e); + console.error(e); } } i += nCut; sText = sText.slice(nCut); } Index: js_extension/regex.js ================================================================== --- js_extension/regex.js +++ js_extension/regex.js @@ -75,16 +75,12 @@ } } } } catch (e) { - if (typeof(helpers) !== "undefined") { - helpers.logerror(e); - } else { - console.error(e); - } + console.error(e); } return m; }; RegExp.prototype.grammalecte = true; }