Simple lookup now works.
This commit is contained in:
parent
7208872b9f
commit
d8a630fa28
@ -52,4 +52,4 @@ function onMouseDown(e) {
|
||||
|
||||
|
||||
|
||||
window.addEventListener('mousedown', onMouseDown, false);
|
||||
// window.addEventListener('mousedown', onMouseDown, false);
|
||||
|
@ -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};
|
||||
}
|
||||
}
|
||||
|
@ -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('猫'));
|
||||
});
|
||||
|
@ -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": [{
|
||||
|
@ -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):
|
||||
|
Loading…
Reference in New Issue
Block a user