From d44f0c576428b69e3deae42893af66371696425b Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Sat, 17 Dec 2016 21:42:53 -0800 Subject: [PATCH] WIP --- ext/bg/js/database.js | 5 ++++- ext/bg/js/translator.js | 29 +++++++++++++++-------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/ext/bg/js/database.js b/ext/bg/js/database.js index 6f474e77..1bcceb05 100644 --- a/ext/bg/js/database.js +++ b/ext/bg/js/database.js @@ -64,6 +64,7 @@ class Database { reading: row.reading, tags: splitField(row.tags), glossary: row.glossary, + score: row.score, dictionary: row.dictionary, id: row.id }); @@ -117,7 +118,7 @@ class Database { continue; } - const tagMeta = this.tagMetaCache[dictionary] = {}; + const tagMeta = {}; promises.push( this.db.tagMeta.where('dictionary').equals(dictionary).each(row => { tagMeta[row.name] = { @@ -125,6 +126,8 @@ class Database { notes: row.notes, order: row.order }; + }).then(() => { + this.tagMetaCache[dictionary] = tagMeta; }) ); } diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index 726922ac..73853612 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -42,10 +42,10 @@ class Translator { } findTerm(text, dictionaries, enableSoftKatakanaSearch) { - return this.findDeinflectGroups(text, dictionaries).then(groups => { + return this.findDeinflectionGroups(text, dictionaries).then(groups => { const textHiragana = wanakana._katakanaToHiragana(text); if (text !== textHiragana && enableSoftKatakanaSearch) { - return this.findDeinflectGroups(textHiragana, dictionaries).then(groupsHiragana => { + return this.findDeinflectionGroups(textHiragana, dictionaries).then(groupsHiragana => { for (const key in groupsHiragana) { groups[key] = groups[key] || groupsHiragana[key]; } @@ -87,24 +87,24 @@ class Translator { return Promise.all(promises).then(sets => this.processKanji(sets.reduce((a, b) => a.concat(b), []))); } - findDeinflectGroups(text, dictionaries) { - const deinflectGroups = {}; - const deinflectPromises = []; + findDeinflectionGroups(text, dictionaries) { + const deinflectionGroups = {}; + const deinflectionPromises = []; for (let i = text.length; i > 0; --i) { - deinflectPromises.push( + deinflectionPromises.push( this.deinflector.deinflect(text.slice(0, i), term => { return this.database.findTerm(term, dictionaries).then(definitions => definitions.map(definition => definition.rules)); - }).then(deinflects => { + }).then(deinflections => { const processPromises = []; - for (const deinflect of deinflects) { + for (const deinflection of deinflections) { processPromises.push( this.processDeinflection( - deinflectGroups, - deinflect.source, - deinflect.rules, - deinflect.reasons, - deinflect.root, + deinflectionGroups, + deinflection.source, + deinflection.rules, + deinflection.reasons, + deinflection.root, dictionaries ) ); @@ -115,7 +115,7 @@ class Translator { ); } - return Promise.all(deinflectPromises).then(() => deinflectGroups); + return Promise.all(deinflectionPromises).then(() => deinflectionGroups); } processDeinflection(groups, source, rules, reasons, root, dictionaries) { @@ -142,6 +142,7 @@ class Translator { source, reasons, score: definition.score, + dictionary: definition.dictionary, expression: definition.expression, reading: definition.reading, glossary: definition.glossary,