Import stubs

This commit is contained in:
Alex Yatskov 2016-08-21 13:32:36 -07:00
parent 96c6c4ad1a
commit 67f906ab24
2 changed files with 38 additions and 29 deletions

View File

@ -21,20 +21,32 @@ class Dictionary {
constructor() {
this.termDicts = {};
this.kanjiDicts = {};
this.db = new Dexie('dict');
this.dbVer = 1;
}
addTermDict(name, dict) {
loadDb() {
return this.db.open().then((db) => {
if (db.verno !== this.dbVer) {
Promise.reject('db version mismatch');
}
return db.verno;
});
}
importTermDict(name, dict) {
this.termDicts[name] = dict;
}
addKanjiDict(name, dict) {
importKanjiDict(name, dict) {
this.kanjiDicts[name] = dict;
}
findTerm(term) {
let results = [];
for (let name in this.termDicts) {
for (const name in this.termDicts) {
const dict = this.termDicts[name];
if (!(term in dict.i)) {
continue;
@ -62,7 +74,7 @@ class Dictionary {
findKanji(kanji) {
const results = [];
for (let name in this.kanjiDicts) {
for (const name in this.kanjiDicts) {
const def = this.kanjiDicts[name].c[kanji];
if (def) {
const [k, o, t, ...g] = def;

View File

@ -31,31 +31,28 @@ class Translator {
return;
}
Translator.loadData('bg/data/rules.json')
.then((response) => {
this.deinflector.setRules(JSON.parse(response));
return Translator.loadData('bg/data/tags.json');
})
.then((response) => {
this.tagMeta = JSON.parse(response);
return Translator.loadData('bg/data/edict.json');
})
.then((response) => {
this.dictionary.addTermDict('edict', JSON.parse(response));
return Translator.loadData('bg/data/kanjidic.json');
})
.then((response) => {
this.dictionary.addKanjiDict('kanjidic', JSON.parse(response));
return loadEnamDict ? Translator.loadData('bg/data/enamdict.json') : Promise.resolve(null);
})
.then((response) => {
if (response !== null) {
this.dictionary.addTermDict('enamdict', JSON.parse(response));
}
this.loaded = true;
callback();
});
Translator.loadData('bg/data/rules.json').then((response) => {
this.deinflector.setRules(JSON.parse(response));
return Translator.loadData('bg/data/tags.json');
}).then((response) => {
this.tagMeta = JSON.parse(response);
return this.dictionary.loadDb();
}).then(() => {
this.loaded = true;
callback();
}).catch(() => {
return Translator.loadData('bg/data/edict.json');
}).then((response) => {
this.dictionary.importTermDict('edict', JSON.parse(response));
return Translator.loadData('bg/data/enamdict.json');
}).then((response) => {
this.dictionary.importTermDict('enamdict', JSON.parse(response));
return Translator.loadData('bg/data/kanjidic.json');
}).then((response) => {
this.dictionary.importKanjiDict('kanjidic', JSON.parse(response));
this.loaded = true;
callback();
});
}
findTerm(text) {