From 972b945b4cf37b421b53086ce592f385ebb83a35 Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Tue, 12 Apr 2016 23:12:20 -0700 Subject: [PATCH] Work on new dictionary format --- ext/bg/js/dictionary.js | 33 +++++++++++++++++++++++++-------- ext/bg/js/translator.js | 8 ++++---- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/ext/bg/js/dictionary.js b/ext/bg/js/dictionary.js index feb8c92b..185aaee2 100644 --- a/ext/bg/js/dictionary.js +++ b/ext/bg/js/dictionary.js @@ -33,16 +33,33 @@ class Dictionary { findTerm(term) { const results = []; - return (this.termIndices[term] || []).map(index => { - const [e, r, g, t] = this.terms[index]; - return {id: index, expression: e, reading: r, glossary: g, tags: t.split(' ')}; - }); + + for (const name in this.termDicts) { + const dict = this.termDicts[name]; + const indices = dict.indices[term] || []; + + results.push( + indices.map(index => { + const [e, r, t, ...g] = dict.defs[index]; + return {id: index, expression: e, reading: r, glossary: g.join('; '), tags: t.split(' ')}; + }) + ); + } + + return results; } findKanji(kanji) { - return (this.kanjiIndices[kanji] || []).map(index => { - const [c, k, o, g] = def; - return {id: index, character: c, kunyomi: k, onyomi: o, glossary: g}; - }); + const results = []; + + for (const name in this.termDicts) { + const def = this.termDicts[name][kanji]; + if (def) { + const [c, k, o, g] = def; + results.push({id: index, character: c, kunyomi: k, onyomi: o, glossary: g}); + } + } + + return results; } } diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index 5414a553..101083e8 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -22,9 +22,9 @@ class Translator { this.loaded = false; this.paths = { rules: 'bg/data/rules.json', - edict: 'bg/data/edict.csv', - enamdict: 'bg/data/enamdict.csv', - kanjidic: 'bg/data/kanjidic.csv' + edict: 'bg/data/edict.json', + enamdict: 'bg/data/enamdict.json', + kanjidic: 'bg/data/kanjidic.json' }; this.dictionary = new Dictionary(); @@ -46,7 +46,7 @@ class Translator { this.deinflector.setRules(JSON.parse(response)); break; case 'kanjidic': - this.dictionary.addKanjiDict('kanjidic', JSON.parse(response)); + this.dictionary.addKanjiDict(key, JSON.parse(response)); break; case 'edict': case 'enamdict':