Simple lookup now works.

This commit is contained in:
Alex Yatskov 2016-03-20 17:15:40 -07:00
parent 7208872b9f
commit d8a630fa28
5 changed files with 65 additions and 39 deletions

View File

@ -52,4 +52,4 @@ function onMouseDown(e) {
window.addEventListener('mousedown', onMouseDown, false);
// window.addEventListener('mousedown', onMouseDown, false);

View File

@ -18,11 +18,55 @@
class Dictionary {
constructor(rules) {
this.rules = rules;
constructor() {
this.termDicts = [];
this.kanjiDicts = [];
}
deinflect(term, validator) {
addTermDict(termDict) {
this.termDicts.push(termDict);
}
addKanjiDict(kanjiDict) {
this.kanjiDicts.push(kanjiDict);
}
findTerm(term) {
let results = [];
for (let dict of this.termDicts) {
results = results.concat(this.findTermInDict(term, dict));
}
return results;
}
findKanji(kanji) {
const results = [];
for (let dict of this.kanjiDicts) {
const result = this.findKanjiInDict(kanji, dict);
if (result !== null) {
results.push(result);
}
}
return results;
}
findTermInDict(term, dict) {
return (dict.indices[term] || []).map(index => {
const [e, r, g, t] = dict.defs[index];
return {expression: e, reading: r, glossary: g, tags: t};
});
}
findKanjiInDict(kanji, dict) {
const def = dict.defs[kanji];
if (def === null) {
return null;
}
const [c, k, o, g] = def;
return {character: c, kunyomi: k, onyomi: o, glossary: g};
}
}

View File

@ -18,10 +18,7 @@
class Translator {
constructor() {
this.rules = {};
this.edict = {};
this.enamdict = {};
this.kanjidic = {};
this.dictionary = new Dictionary();
this.initialized = false;
}
@ -38,10 +35,9 @@ class Translator {
}
$.when.apply($, loaders).done((rules, edict, enamdict, kanjidic) => {
this.rules = rules;
this.edict = edict;
this.enamdict = enamdict;
this.kanjidic = kanjidic;
this.dictionary.addTermDict(edict[0]);
this.dictionary.addTermDict(enamdict[0]);
this.dictionary.addKanjiDict(kanjidic[0]);
this.initialized = true;
@ -60,5 +56,6 @@ trans.initialize({
enamdict: 'jp/data/enamdict.json',
kanjidic: 'jp/data/kanjidic.json',
}, function() {
alert('Loaded');
// alert('Loaded');
// alert(trans.dictionary.findTerm('猫'));
});

View File

@ -4,10 +4,7 @@
"description": "Yomichan Extension",
"version": "0.0.1",
"browser_action": {
"default_icon": "icon.png"
},
"browser_action": {"default_icon": "icon.png"},
"background": {"page": "background.html"},
"content_scripts": [{

View File

@ -158,27 +158,15 @@ def parse_edict(path):
defs.append((term, reading, glossary, tags))
term_indices = {}
reading_indices = {}
indices = {}
for i, d in enumerate(defs):
term, reading = d[:2]
for key in d[:2]:
if key is not None:
values = indices.get(key, [])
values.append(i)
indices[key] = values
if term is not None:
term_list = term_indices.get(term, [])
term_list.append(i)
term_indices[term] = term_list
if reading is not None:
reading_list = reading_indices.get(reading, [])
reading_list.append(i)
reading_indices[reading] = reading_list
return {
'defs': defs,
't_idx': term_indices,
'r_idx': reading_indices
};
return {'defs': defs, 'indices': indices}
def build_dict(output_dir, input_file, parser):