Overview
Comment: | [tb] Thunderbird uses his own worker now |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | tb | graphspell |
Files: | files | file ages | folders |
SHA3-256: |
ab82e044de7393fa649577fa4adfa4a7 |
User & Date: | olr on 2017-12-24 22:15:12 |
Other Links: | branch diff | manifest | tags |
Context
2017-12-24
| ||
22:36 | [build][js] fix import for helpers.js check-in: 6a18692390 user: olr tags: build, graphspell | |
22:15 | [tb] Thunderbird uses his own worker now check-in: ab82e044de user: olr tags: tb, graphspell | |
21:15 | [fr] correction de codes de positionnement pour JS check-in: 8adf588580 user: olr tags: fr, graphspell | |
Changes
Modified gc_lang/fr/build.py from [aa270a34fd] to [9eae4b1757].
︙ | ︙ | |||
80 81 82 83 84 85 86 | spfZip = "_build/" + sExtensionName hZip = zipfile.ZipFile(spfZip, mode='w', compression=zipfile.ZIP_DEFLATED) _copyGrammalecteJSPackageInZipFile(hZip, spLangPack, dVars['dic_name']+".json") for spf in ["LICENSE.txt", "LICENSE.fr.txt"]: hZip.write(spf) dVars = _createOptionsForThunderbird(dVars) helpers.addFolderToZipAndFileFile(hZip, "gc_lang/"+sLang+"/tb", "", dVars, True) | < | 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | spfZip = "_build/" + sExtensionName hZip = zipfile.ZipFile(spfZip, mode='w', compression=zipfile.ZIP_DEFLATED) _copyGrammalecteJSPackageInZipFile(hZip, spLangPack, dVars['dic_name']+".json") for spf in ["LICENSE.txt", "LICENSE.fr.txt"]: hZip.write(spf) dVars = _createOptionsForThunderbird(dVars) helpers.addFolderToZipAndFileFile(hZip, "gc_lang/"+sLang+"/tb", "", dVars, True) spDict = "gc_lang/"+sLang+"/xpi/data/dictionaries" for sp in os.listdir(spDict): if os.path.isdir(spDict+"/"+sp): hZip.write(spDict+"/"+sp+"/"+sp+".dic", "content/dictionaries/"+sp+"/"+sp+".dic") hZip.write(spDict+"/"+sp+"/"+sp+".aff", "content/dictionaries/"+sp+"/"+sp+".aff") hZip.close() helpers.unzip(spfZip, dVars['tb_debug_extension_path']) |
︙ | ︙ |
Added gc_lang/fr/tb/worker/gce_worker.js version [2bacc1f533].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 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 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | // JavaScript // Grammar checker engine // PromiseWorker // This code is executed in a separate thread (×20 faster too!!!) // Firefox WTF: it’s impossible to use require as in the main thread here, // so it is required to declare a resource in the file “chrome.manifest”. "use strict"; // copy/paste // https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/PromiseWorker.jsm importScripts("resource://gre/modules/workers/require.js"); let PromiseWorker = require("resource://gre/modules/workers/PromiseWorker.js"); // Instantiate AbstractWorker (see below). let worker = new PromiseWorker.AbstractWorker(); worker.dispatch = function(method, args = []) { // Dispatch a call to method `method` with args `args` return self[method](...args); }; worker.postMessage = function(...args) { // Post a message to the main thread self.postMessage(...args); }; worker.close = function() { // Close the worker self.close(); }; worker.log = function(...args) { // Log (or discard) messages (optional) dump("Worker: " + args.join(" ") + "\n"); }; // Connect it to message port. self.addEventListener("message", msg => worker.handleMessage(msg)); // end of copy/paste // no console here, use “dump” let gce = null; // module: grammar checker engine let text = null; let tkz = null; // module: tokenizer let lxg = null; // module: lexicographer let helpers = null; let oTokenizer = null; let oDict = null; let oLxg = null; function loadGrammarChecker (sGCOptions="", sContext="JavaScript") { if (gce === null) { try { gce = require("resource://grammalecte/fr/gc_engine.js"); 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); oDict = gce.getDictionary(); oLxg = new lxg.Lexicographe(oDict); if (sGCOptions !== "") { gce.setOptions(helpers.objectToMap(JSON.parse(sGCOptions))); } // we always retrieve options from the gce, for setOptions filters obsolete options return gce.getOptions().gl_toString(); } catch (e) { worker.log("# Error: " + e.fileName + "\n" + e.name + "\nline: " + e.lineNumber + "\n" + e.message); } } } function parse (sText, sCountry, bDebug, bContext) { let aGrammErr = gce.parse(sText, sCountry, bDebug, bContext); return JSON.stringify(aGrammErr); } function parseAndSpellcheck (sText, sCountry, bDebug, bContext) { let aGrammErr = gce.parse(sText, sCountry, bDebug, bContext); let aSpellErr = oTokenizer.getSpellingErrors(sText, oDict); return JSON.stringify({ aGrammErr: aGrammErr, aSpellErr: aSpellErr }); } function getOptions () { return gce.getOptions().gl_toString(); } function getDefaultOptions () { return gce.getDefaultOptions().gl_toString(); } function setOptions (sGCOptions) { gce.setOptions(helpers.objectToMap(JSON.parse(sGCOptions))); return gce.getOptions().gl_toString(); } function setOption (sOptName, bValue) { gce.setOptions(new Map([ [sOptName, bValue] ])); return gce.getOptions().gl_toString(); } function resetOptions () { gce.resetOptions(); return gce.getOptions().gl_toString(); } function fullTests (sGCOptions="") { if (!gce || !oDict) { return "# Error: grammar checker or dictionary not loaded." } let dMemoOptions = gce.getOptions(); if (sGCOptions) { gce.setOptions(helpers.objectToMap(JSON.parse(sGCOptions))); } let tests = require("resource://grammalecte/tests.js"); let oTest = new tests.TestGrammarChecking(gce); let sAllRes = ""; for (let sRes of oTest.testParse()) { dump(sRes+"\n"); sAllRes += sRes+"\n"; } gce.setOptions(dMemoOptions); return sAllRes; } // Lexicographer function getListOfElements (sText) { try { let aElem = []; let aRes = null; for (let oToken of oTokenizer.genTokens(sText)) { aRes = oLxg.getInfoForToken(oToken); if (aRes) { aElem.push(aRes); } } return JSON.stringify(aElem); } catch (e) { helpers.logerror(e); } } |