aboutsummaryrefslogtreecommitdiff
path: root/ext/jp
diff options
context:
space:
mode:
Diffstat (limited to 'ext/jp')
-rw-r--r--ext/jp/init.js40
-rw-r--r--ext/jp/translator.js24
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('食べました'));
-});