Index: gc_core/js/helpers.js ================================================================== --- gc_core/js/helpers.js +++ gc_core/js/helpers.js @@ -1,7 +1,9 @@ // HELPERS +/*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. @@ -56,10 +58,11 @@ let { Cc, Ci } = require("chrome"); xRequest = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(); xRequest.QueryInterface(Ci.nsIXMLHttpRequest); } xRequest.open('GET', spf, false); // 3rd arg is false for synchronous, sync is acceptable in workers + xRequest.overrideMimeType('text/json'); xRequest.send(); return xRequest.responseText; } catch (e) { this.logerror(e); Index: gc_core/js/ibdawg.js ================================================================== --- gc_core/js/ibdawg.js +++ gc_core/js/ibdawg.js @@ -1,6 +1,8 @@ //// IBDAWG +/*jslint esversion: 6*/ +/*global console,require,exports*/ "use strict"; if (typeof(require) !== 'undefined') { Index: gc_core/js/jsex_map.js ================================================================== --- gc_core/js/jsex_map.js +++ gc_core/js/jsex_map.js @@ -1,7 +1,8 @@ // Map +/*jslint esversion: 6*/ if (Map.prototype.grammalecte === undefined) { Map.prototype.gl_shallowCopy = function () { let oNewMap = new Map(); for (let [key, val] of this.entries()) { Index: gc_core/js/jsex_regex.js ================================================================== --- gc_core/js/jsex_regex.js +++ gc_core/js/jsex_regex.js @@ -1,7 +1,8 @@ // regex +/*jslint esversion: 6*/ if (RegExp.prototype.grammalecte === undefined) { RegExp.prototype.gl_exec2 = function (sText, aGroupsPos, aNegLookBefore=null) { let m; while ((m = this.exec(sText)) !== null) { Index: gc_core/js/jsex_string.js ================================================================== --- gc_core/js/jsex_string.js +++ gc_core/js/jsex_string.js @@ -1,7 +1,8 @@ // String +/*jslint esversion: 6*/ if (String.prototype.grammalecte === undefined) { String.prototype.gl_count = function (sSearch, bOverlapping) { // http://jsperf.com/string-ocurrence-split-vs-match/8 if (sSearch.length <= 0) { 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 @@ -1,6 +1,8 @@ // Grammar checker engine +/*jslint esversion: 6*/ +/*global console,require,exports*/ "use strict"; ${string} ${regex} Index: gc_core/js/lang_core/gc_options.js ================================================================== --- gc_core/js/lang_core/gc_options.js +++ gc_core/js/lang_core/gc_options.js @@ -1,6 +1,8 @@ // Options for Grammalecte +/*jslint esversion: 6*/ +/*global exports*/ ${map} var gc_options = { Index: gc_core/js/lang_core/gc_rules.js ================================================================== --- gc_core/js/lang_core/gc_rules.js +++ gc_core/js/lang_core/gc_rules.js @@ -1,6 +1,9 @@ // Grammar checker rules +/*jslint esversion: 6*/ +/*global exports*/ + "use strict"; ${string} ${regex} Index: gc_core/js/str_transform.js ================================================================== --- gc_core/js/str_transform.js +++ gc_core/js/str_transform.js @@ -1,6 +1,7 @@ //// STRING TRANSFORMATION +/*jslint esversion: 6*/ // Note: 48 is the ASCII code for "0" var str_transform = { getStemFromSuffixCode: function (sFlex, sSfxCode) { Index: gc_core/js/tests.js ================================================================== --- gc_core/js/tests.js +++ gc_core/js/tests.js @@ -1,6 +1,8 @@ // JavaScript +/*jslint esversion: 6*/ +/*global console,require,exports*/ "use strict"; if (typeof(require) !== 'undefined') { Index: gc_core/js/text.js ================================================================== --- gc_core/js/text.js +++ gc_core/js/text.js @@ -1,6 +1,8 @@ // JavaScript +/*jslint esversion: 6*/ +/*global require,exports*/ "use strict"; if (typeof(require) !== 'undefined') { Index: gc_core/js/tokenizer.js ================================================================== --- gc_core/js/tokenizer.js +++ gc_core/js/tokenizer.js @@ -1,7 +1,9 @@ // JavaScript // Very simple tokenizer +/*jslint esversion: 6*/ +/*global require,exports*/ "use strict"; if (typeof(require) !== 'undefined') { Index: gc_lang/fr/modules-js/conj.js ================================================================== --- gc_lang/fr/modules-js/conj.js +++ gc_lang/fr/modules-js/conj.js @@ -1,26 +1,34 @@ // Grammalecte - Conjugueur // License: GPL 3 +/*jslint esversion: 6*/ +/*global console,require,exports,self,browser*/ "use strict"; ${map} + +if (typeof(require) !== 'undefined') { + var helpers = require("resource://grammalecte/helpers.js"); +} var conj = { _lVtyp: [], _lTags: [], _dPatternConj: {}, _dVerb: {}, + bInit: false, init: function (sJSONData) { try { let _oData = JSON.parse(sJSONData); this._lVtyp = _oData.lVtyp; this._lTags = _oData.lTags; this._dPatternConj = _oData.dPatternConj; this._dVerb = _oData.dVerb; + this.bInit = true; } catch (e) { console.error(e); } }, @@ -476,23 +484,24 @@ } } // Initialization -if (typeof(browser) !== 'undefined') { +if (!conj.bInit && typeof(browser) !== 'undefined') { // WebExtension (but not in Worker) conj.init(helpers.loadFile(browser.extension.getURL("grammalecte/fr/conj_data.json"))); -} else if (typeof(require) !== 'undefined') { +} else if (!conj.bInit && typeof(require) !== 'undefined') { // Add-on SDK and Thunderbird - let helpers = require("resource://grammalecte/helpers.js"); conj.init(helpers.loadFile("resource://grammalecte/fr/conj_data.json")); -} else if (typeof(self) !== 'undefined' && typeof(self.port) !== 'undefined' && typeof(self.port.on) !== "undefined") { +} else if ( !conj.bInit && typeof(self) !== 'undefined' && typeof(self.port) !== 'undefined' && typeof(self.port.on) !== "undefined") { // used within Firefox content script (conjugation panel). // can’t load JSON from here, so we do it in ui.js and send it here. self.port.on("provideConjData", function (sJSONData) { conj.init(sJSONData); }); +} else if (conj.bInit){ + console.log("Module conj déjà initialisé"); } else { console.log("Module conj non initialisé"); } Index: gc_lang/fr/modules-js/cregex.js ================================================================== --- gc_lang/fr/modules-js/cregex.js +++ gc_lang/fr/modules-js/cregex.js @@ -1,6 +1,7 @@ //// Grammalecte - Compiled regular expressions +/*jslint esversion: 6*/ var cregex = { ///// Lemme _zLemma: new RegExp(">([a-zà-öø-ÿ0-9Ā-ʯ][a-zà-öø-ÿ0-9Ā-ʯ-]+)"), Index: gc_lang/fr/modules-js/gce_analyseur.js ================================================================== --- gc_lang/fr/modules-js/gce_analyseur.js +++ gc_lang/fr/modules-js/gce_analyseur.js @@ -1,6 +1,7 @@ //// GRAMMAR CHECKING ENGINE PLUGIN: Parsing functions for French language +/*jslint esversion: 6*/ function rewriteSubject (s1, s2) { // s1 is supposed to be prn/patr/npr (M[12P]) if (s2 == "lui") { return "ils"; Index: gc_lang/fr/modules-js/gce_date_verif.js ================================================================== --- gc_lang/fr/modules-js/gce_date_verif.js +++ gc_lang/fr/modules-js/gce_date_verif.js @@ -1,6 +1,7 @@ //// GRAMMAR CHECKING ENGINE PLUGIN +/*jslint esversion: 6*/ // Check date validity // WARNING: when creating a Date, month must be between 0 and 11 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 @@ -1,6 +1,8 @@ //// GRAMMAR CHECKING ENGINE PLUGIN: Suggestion mechanisms +/*jslint esversion: 6*/ +/*global require*/ if (typeof(require) !== 'undefined') { var conj = require("resource://grammalecte/fr/conj.js"); var mfsp = require("resource://grammalecte/fr/mfsp.js"); var phonet = require("resource://grammalecte/fr/phonet.js"); Index: gc_lang/fr/modules-js/lexicographe.js ================================================================== --- gc_lang/fr/modules-js/lexicographe.js +++ gc_lang/fr/modules-js/lexicographe.js @@ -1,7 +1,9 @@ // Grammalecte - Lexicographe // License: MPL 2 +/*jslint esversion: 6*/ +/*global require,exports*/ "use strict"; ${string} ${map} Index: gc_lang/fr/modules-js/mfsp.js ================================================================== --- gc_lang/fr/modules-js/mfsp.js +++ gc_lang/fr/modules-js/mfsp.js @@ -1,6 +1,8 @@ // Grammalecte +/*jslint esversion: 6*/ +/*global console,require,exports,browser*/ "use strict"; if (typeof(require) !== 'undefined') { @@ -15,17 +17,19 @@ // dictionary of words with uncommon plurals (-x, -ux, english, latin and italian plurals) and tags to generate them _dMiscPlur: new Map(), // dictionary of feminine forms and tags to generate masculine forms (singular and plural) _dMasForm: new Map(), + bInit: false, init: function (sJSONData) { try { let _oData = JSON.parse(sJSONData); this._lTagMiscPlur = _oData.lTagMiscPlur; this._lTagMasForm = _oData.lTagMasForm; this._dMiscPlur = helpers.objectToMap(_oData.dMiscPlur); this._dMasForm = helpers.objectToMap(_oData.dMasForm); + this.bInit = true; } catch (e) { console.error(e); } }, @@ -98,16 +102,18 @@ } }; // Initialization -if (typeof(browser) !== 'undefined') { +if (!mfsp.bInit && typeof(browser) !== 'undefined') { // WebExtension mfsp.init(helpers.loadFile(browser.extension.getURL("grammalecte/fr/mfsp_data.json"))); -} else if (typeof(require) !== 'undefined') { +} else if (!mfsp.bInit && typeof(require) !== 'undefined') { // Add-on SDK and Thunderbird mfsp.init(helpers.loadFile("resource://grammalecte/fr/mfsp_data.json")); +} else if (mfsp.bInit){ + console.log("Module mfsp déjà initialisé"); } else { console.log("Module mfsp non initialisé"); } Index: gc_lang/fr/modules-js/phonet.js ================================================================== --- gc_lang/fr/modules-js/phonet.js +++ gc_lang/fr/modules-js/phonet.js @@ -1,6 +1,7 @@ // Grammalecte - Suggestion phonétique +/*jslint esversion: 6*/ if (typeof(require) !== 'undefined') { var helpers = require("resource://grammalecte/helpers.js"); } @@ -8,16 +9,18 @@ var phonet = { _dWord: new Map(), _lSet: [], _dMorph: new Map(), + bInit: false, init: function (sJSONData) { try { let _oData = JSON.parse(sJSONData); this._dWord = helpers.objectToMap(_oData.dWord); this._lSet = _oData.lSet; this._dMorph = helpers.objectToMap(_oData.dMorph); + this.bInit = true; } catch (e) { console.error(e); } }, @@ -79,16 +82,18 @@ } }; // Initialization -if (typeof(browser) !== 'undefined') { +if (!phonet.bInit && typeof(browser) !== 'undefined') { // WebExtension phonet.init(helpers.loadFile(browser.extension.getURL("grammalecte/fr/phonet_data.json"))); -} else if (typeof(require) !== 'undefined') { +} else if (!phonet.bInit && typeof(require) !== 'undefined') { // Add-on SDK and Thunderbird phonet.init(helpers.loadFile("resource://grammalecte/fr/phonet_data.json")); +} else if (phonet.bInit){ + console.log("Module phonet déjà initialisé"); } else { console.log("Module phonet non initialisé"); } Index: gc_lang/fr/modules-js/textformatter.js ================================================================== --- gc_lang/fr/modules-js/textformatter.js +++ gc_lang/fr/modules-js/textformatter.js @@ -1,6 +1,8 @@ // Grammalecte - text formatter +/*jslint esversion: 6*/ +/*global exports*/ "use strict"; ${map}