Comment: | [core][js] conditional requires and variable renaming to avoid overridding |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core | webext2 |
Files: | files | file ages | folders |
SHA3-256: |
7e545790c388950734fee675858de868 |
User & Date: | olr on 2017-08-02 06:12:02 |
Other Links: | branch diff | manifest | tags |
2017-08-02
| ||
06:26 | [core][js] variable renaming again check-in: e35b6e2bbd user: olr tags: core, webext2 | |
06:12 | [core][js] conditional requires and variable renaming to avoid overridding check-in: 7e545790c3 user: olr tags: core, webext2 | |
2017-08-01
| ||
09:44 | [core][js] gc_engine as object check-in: 2163dd1535 user: olr tags: core, webext2 | |
Modified gc_core/js/ibdawg.js from [e748c8288e] to [81ed21aafb].
1 2 3 4 | //// IBDAWG "use strict"; | > > | | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //// IBDAWG "use strict"; if (typeof(exports) !== 'undefined') { var str_transform = require("resource://grammalecte/str_transform.js"); var helpers = require("resource://grammalecte/helpers.js"); } // String // Don’t remove. Necessary in TB. ${string} |
︙ | ︙ | |||
37 38 39 40 41 42 43 | throw RangeError("# Error. Unknown dictionary version: " + this.nVersion); } this.dChar = helpers.objectToMap(this.dChar); //this.byDic = new Uint8Array(this.byDic); // not quicker, even slower if (this.cStemming == "S") { | | | | | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | throw RangeError("# Error. Unknown dictionary version: " + this.nVersion); } this.dChar = helpers.objectToMap(this.dChar); //this.byDic = new Uint8Array(this.byDic); // not quicker, even slower if (this.cStemming == "S") { this.funcStemming = str_transform.getStemFromSuffixCode; } else if (this.cStemming == "A") { this.funcStemming = str_transform.getStemFromAffixCode; } else { this.funcStemming = str_transform.noStemming; } // Configuring DAWG functions according to nVersion switch (this.nVersion) { case 1: this.morph = this._morph1; this.stem = this._stem1; |
︙ | ︙ |
Modified gc_core/js/lang_core/gc_engine.js from [bd03577ac7] to [57156dedce].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // Grammar checker engine ${string} ${regex} ${map} function capitalizeArray (aArray) { // can’t map on user defined function?? let aNew = []; for (let i = 0; i < aArray.length; i = i + 1) { aNew[i] = aArray[i].gl_toCapitalize(); } return aNew; } | > > > > > > > > > > > < < < < < < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | // Grammar checker engine ${string} ${regex} ${map} if (typeof(exports) !== 'undefined') { var ibdawg = require("resource://grammalecte/ibdawg.js"); var helpers = require("resource://grammalecte/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 = require("resource://grammalecte/helpers.js").echo; } function capitalizeArray (aArray) { // can’t map on user defined function?? let aNew = []; for (let i = 0; i < aArray.length; i = i + 1) { aNew[i] = aArray[i].gl_toCapitalize(); } return aNew; } // data let _sAppContext = ""; // what software is running let _dOptions = null; let _aIgnoredRules = new Set(); let _oDict = null; let _dAnalyses = new Map(); // cache for data from dictionary |
︙ | ︙ |
Modified gc_core/js/str_transform.js from [9b41fc7a14] to [33525a019a].
1 2 3 4 | //// STRING TRANSFORMATION // Note: 48 is the ASCII code for "0" | | | 1 2 3 4 5 6 7 8 9 10 11 12 | //// STRING TRANSFORMATION // Note: 48 is the ASCII code for "0" const str_transform = { getStemFromSuffixCode: function (sFlex, sSfxCode) { // Suffix only if (sSfxCode == "0") { return sFlex; } return sSfxCode[0] == '0' ? sFlex + sSfxCode.slice(1) : sFlex.slice(0, -(sSfxCode.charCodeAt(0)-48)) + sSfxCode.slice(1); }, |
︙ | ︙ |
Modified gc_core/js/tests.js from [f2f737b523] to [373a8fcfff].
1 2 3 4 5 | // JavaScript "use strict"; | > | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // JavaScript "use strict"; if (typeof(exports) !== 'undefined') { var helpers = require("resource://grammalecte/helpers.js"); } class TestGrammarChecking { constructor (gce) { this.gce = gce; this._aRuleTested = new Set(); |
︙ | ︙ |
Modified gc_core/js/text.js from [b502e53f4f] to [2c268f1b5e].
1 2 3 4 | // JavaScript "use strict"; | > > | | > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // JavaScript "use strict"; if (typeof(exports) !== 'undefined') { var helpers = require("resource://grammalecte/helpers.js"); } const text = { getParagraph: function* (sText) { // generator: returns paragraphs of text let iStart = 0; let iEnd = 0; sText = sText.replace("\r", ""); while ((iEnd = sText.indexOf("\n", iStart)) !== -1) { yield sText.slice(iStart, iEnd); |
︙ | ︙ |
Modified gc_core/js/tokenizer.js from [a6594366c3] to [02266194ef].
1 2 3 4 5 | // JavaScript // Very simple tokenizer "use strict"; | > > | | > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // JavaScript // Very simple tokenizer "use strict"; if (typeof(exports) !== 'undefined') { var helpers = require("resource://grammalecte/helpers.js"); } const aTkzPatterns = { // All regexps must start with ^. "default": [ [/^[ \t]+/, 'SPACE'], [/^[,.;:!?…«»“”‘’"(){}\[\]/·–—]+/, 'SEPARATOR'], [/^(?:https?:\/\/|www[.]|[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_]+[@.][a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_]+[@.])[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_.\/?&!%=+*"'@$#-]+/, 'LINK'], [/^[#@][a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_-]+/, 'TAG'], |
︙ | ︙ | |||
38 39 40 41 42 43 44 | } class Tokenizer { constructor (sLang) { this.sLang = sLang; | | | | 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | } class Tokenizer { constructor (sLang) { this.sLang = sLang; if (!aTkzPatterns.hasOwnProperty(sLang)) { this.sLang = "default"; } this.aRules = aTkzPatterns[this.sLang]; }; * genTokens (sText) { let m; let i = 0; while (sText) { let nCut = 1; |
︙ | ︙ |
Modified gc_lang/fr/modules-js/gce_analyseur.js from [673094989d] to [973aa5af1d].
︙ | ︙ | |||
18 19 20 21 22 23 24 | return "vous"; } if (s2 == "eux") { return "ils"; } if (s2 == "elle" || s2 == "elles") { // We don’t check if word exists in _dAnalyses, for it is assumed it has been done before | | | | | | | | | | | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | return "vous"; } if (s2 == "eux") { return "ils"; } if (s2 == "elle" || s2 == "elles") { // We don’t check if word exists in _dAnalyses, for it is assumed it has been done before if (cregex.mbNprMasNotFem(_dAnalyses.gl_get(s1, ""))) { return "ils"; } // si épicène, indéterminable, mais OSEF, le féminin l’emporte return "elles"; } return s1 + " et " + s2; } function apposition (sWord1, sWord2) { // returns true if nom + nom (no agreement required) // We don’t check if word exists in _dAnalyses, for it is assumed it has been done before return cregex.mbNomNotAdj(_dAnalyses.gl_get(sWord2, "")) && cregex.mbPpasNomNotAdj(_dAnalyses.gl_get(sWord1, "")); } function isAmbiguousNAV (sWord) { // words which are nom|adj and verb are ambiguous (except être and avoir) if (!_dAnalyses.has(sWord) && !_storeMorphFromFSA(sWord)) { return false; } if (!cregex.mbNomAdj(_dAnalyses.gl_get(sWord, "")) || sWord == "est") { return false; } if (cregex.mbVconj(_dAnalyses.gl_get(sWord, "")) && !cregex.mbMG(_dAnalyses.gl_get(sWord, ""))) { return true; } return false; } function isAmbiguousAndWrong (sWord1, sWord2, sReqMorphNA, sReqMorphConj) { //// use it if sWord1 won’t be a verb; word2 is assumed to be true via isAmbiguousNAV // We don’t check if word exists in _dAnalyses, for it is assumed it has been done before let a2 = _dAnalyses.gl_get(sWord2, null); if (!a2 || a2.length === 0) { return false; } if (cregex.checkConjVerb(a2, sReqMorphConj)) { // verb word2 is ok return false; } let a1 = _dAnalyses.gl_get(sWord1, null); if (!a1 || a1.length === 0) { return false; } if (cregex.checkAgreement(a1, a2) && (cregex.mbAdj(a2) || cregex.mbAdj(a1))) { return false; } return true; } function isVeryAmbiguousAndWrong (sWord1, sWord2, sReqMorphNA, sReqMorphConj, bLastHopeCond) { //// use it if sWord1 can be also a verb; word2 is assumed to be true via isAmbiguousNAV // We don’t check if word exists in _dAnalyses, for it is assumed it has been done before let a2 = _dAnalyses.gl_get(sWord2, null) if (!a2 || a2.length === 0) { return false; } if (cregex.checkConjVerb(a2, sReqMorphConj)) { // verb word2 is ok return false; } let a1 = _dAnalyses.gl_get(sWord1, null); if (!a1 || a1.length === 0) { return false; } if (cregex.checkAgreement(a1, a2) && (cregex.mbAdj(a2) || cregex.mbAdjNb(a1))) { return false; } // now, we know there no agreement, and conjugation is also wrong if (cregex.isNomAdj(a1)) { return true; } //if cregex.isNomAdjVerb(a1): # considered true if (bLastHopeCond) { return true; } return false; } function checkAgreement (sWord1, sWord2) { // We don’t check if word exists in _dAnalyses, for it is assumed it has been done before let a2 = _dAnalyses.gl_get(sWord2, null) if (!a2 || a2.length === 0) { return true; } let a1 = _dAnalyses.gl_get(sWord1, null); if (!a1 || a1.length === 0) { return true; } return cregex.checkAgreement(a1, a2); } function mbUnit (s) { if (/[µ\/⁰¹²³⁴⁵⁶⁷⁸⁹Ωℓ·]/.test(s)) { return true; } if (s.length > 1 && s.length < 16 && s.slice(0, 1).gl_isLowerCase() && (!s.slice(1).gl_isLowerCase() || /[0-9]/.test(s))) { |
︙ | ︙ |
Modified gc_lang/fr/modules-js/gce_suggestions.js from [d46530bfae] to [7f7dced66d].
1 2 | //// GRAMMAR CHECKING ENGINE PLUGIN: Suggestion mechanisms | > | | | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //// GRAMMAR CHECKING ENGINE PLUGIN: Suggestion mechanisms if (typeof(exports) !== '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"); } //// verbs function suggVerb (sFlex, sWho, funcSugg2=null) { // we don’t check if word exists in _dAnalyses, for it is assumed it has been done before let aSugg = new Set(); |
︙ | ︙ | |||
193 194 195 196 197 198 199 | function suggPlur (sFlex, sWordToAgree=null) { // returns plural forms assuming sFlex is singular if (sWordToAgree) { if (!_dAnalyses.has(sWordToAgree) && !_storeMorphFromFSA(sWordToAgree)) { return ""; } | | | 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | function suggPlur (sFlex, sWordToAgree=null) { // returns plural forms assuming sFlex is singular if (sWordToAgree) { if (!_dAnalyses.has(sWordToAgree) && !_storeMorphFromFSA(sWordToAgree)) { return ""; } let sGender = cregex.getGender(_dAnalyses.gl_get(sWordToAgree, [])); if (sGender == ":m") { return suggMasPlur(sFlex); } else if (sGender == ":f") { return suggFemPlur(sFlex); } } let aSugg = new Set(); |
︙ | ︙ | |||
259 260 261 262 263 264 265 | let aSugg = new Set(); for (let sMorph of _dAnalyses.gl_get(sFlex, [])) { if (!sMorph.includes(":V")) { // not a verb if (sMorph.includes(":m") || sMorph.includes(":e")) { aSugg.add(suggSing(sFlex)); } else { | | | | 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 | let aSugg = new Set(); for (let sMorph of _dAnalyses.gl_get(sFlex, [])) { if (!sMorph.includes(":V")) { // not a verb if (sMorph.includes(":m") || sMorph.includes(":e")) { aSugg.add(suggSing(sFlex)); } else { let sStem = cregex.getLemmaOfMorph(sMorph); if (mfsp.isFemForm(sStem)) { mfsp.getMasForm(sStem, false).forEach(function(x) { aSugg.add(x); }); } } } else { // a verb let sVerb = cregex.getLemmaOfMorph(sMorph); if (conj.hasConj(sVerb, ":PQ", ":Q1") && conj.hasConj(sVerb, ":PQ", ":Q3")) { // We also check if the verb has a feminine form. // If not, we consider it’s better to not suggest the masculine one, as it can be considered invariable. aSugg.add(conj.getConj(sVerb, ":PQ", ":Q1")); } } } |
︙ | ︙ | |||
295 296 297 298 299 300 301 | let aSugg = new Set(); for (let sMorph of _dAnalyses.gl_get(sFlex, [])) { if (!sMorph.includes(":V")) { // not a verb if (sMorph.includes(":m") || sMorph.includes(":e")) { aSugg.add(suggPlur(sFlex)); } else { | | | | 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 | let aSugg = new Set(); for (let sMorph of _dAnalyses.gl_get(sFlex, [])) { if (!sMorph.includes(":V")) { // not a verb if (sMorph.includes(":m") || sMorph.includes(":e")) { aSugg.add(suggPlur(sFlex)); } else { let sStem = cregex.getLemmaOfMorph(sMorph); if (mfsp.isFemForm(sStem)) { mfsp.getMasForm(sStem, true).forEach(function(x) { aSugg.add(x); }); } } } else { // a verb let sVerb = cregex.getLemmaOfMorph(sMorph); if (conj.hasConj(sVerb, ":PQ", ":Q2")) { aSugg.add(conj.getConj(sVerb, ":PQ", ":Q2")); } else if (conj.hasConj(sVerb, ":PQ", ":Q1")) { let sSugg = conj.getConj(sVerb, ":PQ", ":Q1"); // it is necessary to filter these flexions, like “succédé” or “agi” that are not masculine plural if (sSugg.endsWith("s")) { aSugg.add(sSugg); |
︙ | ︙ | |||
336 337 338 339 340 341 342 | let aSugg = new Set(); for (let sMorph of _dAnalyses.gl_get(sFlex, [])) { if (!sMorph.includes(":V")) { // not a verb if (sMorph.includes(":f") || sMorph.includes(":e")) { aSugg.add(suggSing(sFlex)); } else { | | | | 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 | let aSugg = new Set(); for (let sMorph of _dAnalyses.gl_get(sFlex, [])) { if (!sMorph.includes(":V")) { // not a verb if (sMorph.includes(":f") || sMorph.includes(":e")) { aSugg.add(suggSing(sFlex)); } else { let sStem = cregex.getLemmaOfMorph(sMorph); if (mfsp.isFemForm(sStem)) { aSugg.add(sStem); } } } else { // a verb let sVerb = cregex.getLemmaOfMorph(sMorph); if (conj.hasConj(sVerb, ":PQ", ":Q3")) { aSugg.add(conj.getConj(sVerb, ":PQ", ":Q3")); } } } if (bSuggSimil) { for (let e of phonet.selectSimil(sFlex, ":f:[si]")) { |
︙ | ︙ | |||
370 371 372 373 374 375 376 | let aSugg = new Set(); for (let sMorph of _dAnalyses.gl_get(sFlex, [])) { if (!sMorph.includes(":V")) { // not a verb if (sMorph.includes(":f") || sMorph.includes(":e")) { aSugg.add(suggPlur(sFlex)); } else { | | | | 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 | let aSugg = new Set(); for (let sMorph of _dAnalyses.gl_get(sFlex, [])) { if (!sMorph.includes(":V")) { // not a verb if (sMorph.includes(":f") || sMorph.includes(":e")) { aSugg.add(suggPlur(sFlex)); } else { let sStem = cregex.getLemmaOfMorph(sMorph); if (mfsp.isFemForm(sStem)) { aSugg.add(sStem+"s"); } } } else { // a verb let sVerb = cregex.getLemmaOfMorph(sMorph); if (conj.hasConj(sVerb, ":PQ", ":Q4")) { aSugg.add(conj.getConj(sVerb, ":PQ", ":Q4")); } } } if (bSuggSimil) { for (let e of phonet.selectSimil(sFlex, ":f:[pi]")) { |
︙ | ︙ |
Modified gc_lang/fr/modules-js/lexicographe.js from [5e8c9037a7] to [8f5fca9732].
1 2 3 4 5 6 7 8 9 | // Grammalecte - Lexicographe // License: MPL 2 "use strict"; ${string} ${map} | > | < | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // Grammalecte - Lexicographe // License: MPL 2 "use strict"; ${string} ${map} if (typeof(exports) !== 'undefined') { const helpers = require("resource://grammalecte/helpers.js"); } const _dTAGS = new Map ([ [':G', "[mot grammatical]"], [':N', " nom,"], [':A', " adjectif,"], [':M1', " prénom,"], [':M2', " patronyme,"], |
︙ | ︙ |
Modified gc_lang/fr/modules-js/mfsp.js from [6dafeac5dd] to [8827303ea6].
1 2 3 4 | // Grammalecte "use strict"; | > > | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // Grammalecte "use strict"; if (typeof(exports) !== 'undefined') { var helpers = require("resource://grammalecte/helpers.js"); } const _oData = JSON.parse(helpers.loadFile("resource://grammalecte/fr/mfsp_data.json")); // list of affix codes const _lTagMiscPlur = _oData.lTagMiscPlur; const _lTagMasForm = _oData.lTagMasForm; |
︙ | ︙ |
Modified gc_lang/fr/modules-js/phonet.js from [17494340df] to [c49188f2a5].
1 2 | // Grammalecte - Suggestion phonétique | > | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 | // Grammalecte - Suggestion phonétique if (typeof(exports) !== 'undefined') { var helpers = require("resource://grammalecte/helpers.js"); } const _oData = JSON.parse(helpers.loadFile("resource://grammalecte/fr/phonet_data.json")); const _dWord = helpers.objectToMap(_oData.dWord); const _lSet = _oData.lSet; const _dMorph = helpers.objectToMap(_oData.dMorph); |
︙ | ︙ |
Modified gc_lang/fr/modules-js/textformatter.js from [7314bcd9a1] to [6dfa91f96e].
︙ | ︙ | |||
194 195 196 197 198 199 200 | [/^(qu|lorsqu|puisqu|quoiqu|presqu|jusqu|aujourd|entr|quelqu|prud) /ig, "$1’"] ], "ma_1letter_lowercase": [ [/[ ]([ldjnmtscç]) (?=[aàeéêiîoôuyhAÀEÉÊIÎOÔUYH])/g, "$1’"] ], "ma_1letter_uppercase": [ [/[ ]([LDJNMTSCÇ]) (?=[aàeéêiîoôuyhAÀEÉÊIÎOÔUYH])/g, "$1’"], [/^([LDJNMTSCÇ]) (?=[aàeéêiîoôuyhAÀEÉÊIÎOÔUYH])/g, "$1’"] ] }; | | | 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | [/^(qu|lorsqu|puisqu|quoiqu|presqu|jusqu|aujourd|entr|quelqu|prud) /ig, "$1’"] ], "ma_1letter_lowercase": [ [/[ ]([ldjnmtscç]) (?=[aàeéêiîoôuyhAÀEÉÊIÎOÔUYH])/g, "$1’"] ], "ma_1letter_uppercase": [ [/[ ]([LDJNMTSCÇ]) (?=[aàeéêiîoôuyhAÀEÉÊIÎOÔUYH])/g, "$1’"], [/^([LDJNMTSCÇ]) (?=[aàeéêiîoôuyhAÀEÉÊIÎOÔUYH])/g, "$1’"] ] }; const dTFDefaultOptions = new Map ([ ["ts_units", true], ["start_of_paragraph", true], ["end_of_paragraph", true], ["between_words", true], ["before_punctuation", true], ["within_parenthesis", true], ["within_square_brackets", true], |
︙ | ︙ | |||
247 248 249 250 251 252 253 | ["etc", true], ["missing_hyphens", true], ["ma_word", true], ["ma_1letter_lowercase", false], ["ma_1letter_uppercase", false] ]); | | | | | | 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 | ["etc", true], ["missing_hyphens", true], ["ma_word", true], ["ma_1letter_lowercase", false], ["ma_1letter_uppercase", false] ]); const dTFOptions = dTFDefaultOptions.gl_shallowCopy(); class TextFormatter { constructor () { this.sLang = "fr"; }; formatText (sText, dOpt=null) { if (dOpt !== null) { dTFOptions.gl_updateOnlyExistingKeys(dOpt); } for (let [sOptName, bVal] of dTFOptions) { if (bVal && oReplTable.has(sOptName)) { for (let [zRgx, sRep] of oReplTable[sOptName]) { sText = sText.replace(zRgx, sRep); } } } return sText; }; getDefaultOptions () { return dTFDefaultOptions; } } if (typeof(exports) !== 'undefined') { exports.TextFormatter = TextFormatter; exports.oReplTable = oReplTable; } |
Modified gc_lang/fr/webext/gce_worker.js from [8fda2777a3] to [245798772a].
1 2 |
| > > > > > < > > > | < < < < < < < | | < < < > > > | > > > > < < < < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | /* WARNING. JavaScript still sucks. No module available in WebExtension at the moment! :( No require, no import/export. In order to use the same base of code with XUL-addon for Thunderbird and SDK-addon for Firefox, all modules have been “objectified”. And while they are still imported via “require” in the previous extensions, they are loaded as background scripts in WebExtension sharing the same memory space (it seems)… When JavaScript become a modern language, “deobjectify” the modules… ATM, import/export are not available by default: — Chrome 60 – behind the Experimental Web Platform flag in chrome:flags. — Firefox 54 – behind the dom.moduleScripts.enabled setting in about:config. — Edge 15 – behind the Experimental JavaScript Features setting in about:flags. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export */ helpers.echo("START"); let oTokenizer = null; let oDict = null; let oLxg = null; function loadGrammarChecker (sGCOptions="", sContext="JavaScript") { if (gce === null) { |
︙ | ︙ |
Modified gc_lang/fr/webext/manifest.json from [53ddc564c6] to [f93daca40b].
︙ | ︙ | |||
26 27 28 29 30 31 32 | "browser_action": { "default_icon": "img/logo-32.png", "default_popup": "panel/main.html", "default_title": "Grammalecte [fr]", "browser_style": false }, "background": { | > | > > > > | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | "browser_action": { "default_icon": "img/logo-32.png", "default_popup": "panel/main.html", "default_title": "Grammalecte [fr]", "browser_style": false }, "background": { "scripts": [ "grammalecte/helpers.js", "grammalecte/text.js", "grammalecte/tokenizer.js", "gce_worker.js" ] }, "web_accessible_resources": [ "beasts/frog.jpg", "beasts/turtle.jpg", "beasts/snake.jpg" ], "permissions": [ |
︙ | ︙ |