aboutsummaryrefslogtreecommitdiff
path: root/ext/bg
diff options
context:
space:
mode:
authorAlex Yatskov <alex@foosoft.net>2016-09-11 12:29:18 -0700
committerAlex Yatskov <alex@foosoft.net>2016-09-11 12:29:18 -0700
commitd5ea03171ea997d6734e6d31197c7f233fff7084 (patch)
treef10dbfbc9868f5b9aaae2cefb0bbbcf3a56e4514 /ext/bg
parent1ac14cd633b3a99a3dd8ec8d0ec29158077b3798 (diff)
Working with IndexDb
Diffstat (limited to 'ext/bg')
-rw-r--r--ext/bg/js/deinflector.js12
-rw-r--r--ext/bg/js/dictionary.js14
-rw-r--r--ext/bg/js/translator.js35
-rw-r--r--ext/bg/js/yomichan.js18
4 files changed, 43 insertions, 36 deletions
diff --git a/ext/bg/js/deinflector.js b/ext/bg/js/deinflector.js
index 4cdc9a3d..e5b1efe5 100644
--- a/ext/bg/js/deinflector.js
+++ b/ext/bg/js/deinflector.js
@@ -26,14 +26,14 @@ class Deinflection {
}
validate(validator) {
- return validator(this.term).then(tagSets => {
- for (const tags of tagSets) {
+ return validator(this.term).then(sets => {
+ for (const tags of sets) {
if (this.tags.length === 0) {
return true;
}
for (const tag of this.tags) {
- if (tags.indexOf(tag) !== -1) {
+ if (tags.includes(tag)) {
return true;
}
}
@@ -55,7 +55,7 @@ class Deinflection {
for (const variant of rules[rule]) {
let allowed = this.tags.length === 0;
for (const tag of this.tags) {
- if (variant.ti.indexOf(tag) !== -1) {
+ if (variant.ti.includes(tag)) {
allowed = true;
break;
}
@@ -115,8 +115,6 @@ class Deinflector {
deinflect(term, validator) {
const node = new Deinflection(term);
- return node.deinflect(validator, this.rules).then(success => {
- return success ? node.gather() : [];
- });
+ return node.deinflect(validator, this.rules).then(success => success ? node.gather() : []);
}
}
diff --git a/ext/bg/js/dictionary.js b/ext/bg/js/dictionary.js
index 624fe15e..0c5e4c4a 100644
--- a/ext/bg/js/dictionary.js
+++ b/ext/bg/js/dictionary.js
@@ -59,15 +59,15 @@ class Dictionary {
findKanji(kanji) {
const results = [];
- return this.db.kanji.where('c').equals(kanji).each(row => {
+ return this.db.kanji.where('character').equals(kanji).each(row => {
results.push({
- character: row.c,
- onyomi: row.o.split(' '),
- kunyomi: row.k.split(' '),
- tags: row.t.split(' '),
- glossary: row.m
+ character: row.character,
+ onyomi: row.onyomi.split(' '),
+ kunyomi: row.kunyomi.split(' '),
+ tags: row.tags.split(' '),
+ glossary: row.meanings
});
- });
+ }).then(() => results);
}
getEntities(tags) {
diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js
index 9b7b4bf5..6b08f485 100644
--- a/ext/bg/js/translator.js
+++ b/ext/bg/js/translator.js
@@ -55,17 +55,23 @@ class Translator {
}
findTermGroups(text) {
- const groups = {};
-
+ const deinflectGroups = {};
const deinflectPromises = [];
+
for (let i = text.length; i > 0; --i) {
deinflectPromises.push(
this.deinflector.deinflect(text.slice(0, i), term => {
return this.dictionary.findTerm(term).then(definitions => definitions.map(definition => definition.tags));
- }).then(inflects => {
+ }).then(deinflects => {
const processPromises = [];
- for (const inflect of inflects) {
- processPromises.push(this.processTerm(groups, inflect.source, inflect.tags, inflect.rules, inflect.root));
+ for (const deinflect of deinflects) {
+ processPromises.push(this.processTerm(
+ deinflectGroups,
+ deinflect.source,
+ deinflect.tags,
+ deinflect.rules,
+ deinflect.root
+ ));
}
return Promise.all(processPromises);
@@ -73,14 +79,14 @@ class Translator {
);
}
- return Promise.all(deinflectPromises).then(() => groups);
+ return Promise.all(deinflectPromises).then(() => deinflectGroups);
}
findTerm(text) {
- return this.findTermGroups(text).then(groups => {
+ return this.findTermGroups(text).then(deinflectGroups => {
let definitions = [];
- for (const key in groups) {
- definitions.push(groups[key]);
+ for (const key in deinflectGroups) {
+ definitions.push(deinflectGroups[key]);
}
definitions = definitions.sort((v1, v2) => {
@@ -121,17 +127,20 @@ class Translator {
}
findKanji(text) {
- let definitions = [];
const processed = {};
+ const promises = [];
for (const c of text) {
if (!processed[c]) {
- definitions = definitions.concat(this.dictionary.findKanji(c));
+ promises.push(this.dictionary.findKanji(c).then((definitions) => definitions));
processed[c] = true;
}
}
- return this.processKanji(definitions);
+ return Promise.all(promises).then((sets) => {
+ const definitions = sets.reduce((a, b) => a.concat(b));
+ return this.processKanji(definitions);
+ });
}
processTerm(groups, source, tags, rules, root) {
@@ -143,7 +152,7 @@ class Translator {
let matched = tags.length === 0;
for (const tag of tags) {
- if (definition.tags.indexOf(tag) !== -1) {
+ if (definition.tags.includes(tag)) {
matched = true;
break;
}
diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js
index 557f8780..11f348bf 100644
--- a/ext/bg/js/yomichan.js
+++ b/ext/bg/js/yomichan.js
@@ -41,10 +41,10 @@ class Yomichan {
chrome.runtime.onInstalled.addListener(this.onInstalled.bind(this));
chrome.runtime.onMessage.addListener(this.onMessage.bind(this));
chrome.browserAction.onClicked.addListener(this.onBrowserAction.bind(this));
- chrome.tabs.onCreated.addListener((tab) => this.onTabReady(tab.id));
+ chrome.tabs.onCreated.addListener(tab => this.onTabReady(tab.id));
chrome.tabs.onUpdated.addListener(this.onTabReady.bind(this));
- loadOptions((opts) => {
+ loadOptions(opts => {
this.setOptions(opts);
if (this.options.activateOnStartup) {
this.setState('loading');
@@ -118,7 +118,7 @@ class Yomichan {
}
tabInvokeAll(action, params) {
- chrome.tabs.query({}, (tabs) => {
+ chrome.tabs.query({}, tabs => {
for (const tab of tabs) {
this.tabInvoke(tab.id, action, params);
}
@@ -133,7 +133,7 @@ class Yomichan {
if (this.ankiConnectVer === this.getApiVersion()) {
this.ankiInvoke(action, params, pool, callback);
} else {
- this.api_getVersion({callback: (version) => {
+ this.api_getVersion({callback: version => {
if (version === this.getApiVersion()) {
this.ankiConnectVer = version;
this.ankiInvoke(action, params, pool, callback);
@@ -209,7 +209,7 @@ class Yomichan {
break;
case 'tags':
if (definition.tags) {
- value = definition.tags.map((t) => t.name);
+ value = definition.tags.map(t => t.name);
}
break;
}
@@ -244,7 +244,7 @@ class Yomichan {
};
for (const name in fields) {
- if (fields[name].indexOf('{audio}') !== -1) {
+ if (fields[name].includes('{audio}')) {
audio.fields.push(name);
}
}
@@ -274,7 +274,7 @@ class Yomichan {
}
}
- this.ankiInvokeSafe('canAddNotes', {notes}, 'notes', (results) => {
+ this.ankiInvokeSafe('canAddNotes', {notes}, 'notes', results => {
const states = [];
if (results !== null) {
@@ -293,11 +293,11 @@ class Yomichan {
}
api_findKanji({text, callback}) {
- callback(this.translator.findKanji(text));
+ this.translator.findKanji(text).then(result => callback(result));
}
api_findTerm({text, callback}) {
- this.translator.findTerm(text).then((result) => callback(result));
+ this.translator.findTerm(text).then(result => callback(result));
}
api_getDeckNames({callback}) {