diff options
Diffstat (limited to 'ext/jp')
-rw-r--r-- | ext/jp/init.js | 40 | ||||
-rw-r--r-- | ext/jp/translator.js | 24 |
2 files changed, 42 insertions, 22 deletions
diff --git a/ext/jp/init.js b/ext/jp/init.js new file mode 100644 index 00000000..81c06d3d --- /dev/null +++ b/ext/jp/init.js @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2016 Alex Yatskov <alex@foosoft.net> + * Author: Alex Yatskov <alex@foosoft.net> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + + +function onInit() { + chrome.runtime.onMessage.addListener(onMessage); +} + +const res = { + rules: 'jp/data/rules.json', + edict: 'jp/data/edict.json', + enamdict: 'jp/data/enamdict.json', + kanjidic: 'jp/data/kanjidic.json' +}; + +const trans = new Translator(res, onInit); + +function onMessage(request, sender, callback) { + switch (request.action.toLowerCase()) { + case 'define': + callback(trans.findTerm(request.term)); + break; + } +} + diff --git a/ext/jp/translator.js b/ext/jp/translator.js index 39ef176c..36ed60f3 100644 --- a/ext/jp/translator.js +++ b/ext/jp/translator.js @@ -16,17 +16,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + class Translator { - constructor() { + constructor(paths, callback) { this.dictionary = new Dictionary(); this.deinflector = new Deinflector(); - this.initialized = false; - } - - initialize(paths, callback) { - if (this.initialized) { - return; - } const loaders = []; for (const key of ['rules', 'edict', 'enamdict', 'kanjidic']) { @@ -118,7 +112,6 @@ class Translator { resultSorter(v1, v2) { const sl1 = v1.source.length; const sl2 = v2.source.length; - if (sl1 > sl2) { return 1; } else if (sl1 > sl2) { @@ -127,7 +120,6 @@ class Translator { const p1 = v1.tags.indexOf('P') >= 0; const p2 = v2.tags.indexOf('P') >= 0; - if (p1 && !p2) { return 1; } else if (!p1 && p2) { @@ -136,7 +128,6 @@ class Translator { const rl1 = v1.rules.length; const rl2 = v2.rules.length; - if (rl1 < rl2) { return 1; } else if (rl2 > rl1) { @@ -146,14 +137,3 @@ class Translator { return 0; } } - -const trans = new Translator(); - -trans.initialize({ - rules: 'jp/data/rules.json', - edict: 'jp/data/edict.json', - enamdict: 'jp/data/enamdict.json', - kanjidic: 'jp/data/kanjidic.json' -}, function() { - console.log(trans.findTerm('食べました')); -}); |