Updating dictionaries
This commit is contained in:
parent
7d0991f9c1
commit
bf28dea283
@ -19,31 +19,20 @@
|
||||
|
||||
class Dictionary {
|
||||
constructor() {
|
||||
this.terms = [];
|
||||
this.termIndices = {};
|
||||
|
||||
this.kanji = [];
|
||||
this.kanjiIndices = {};
|
||||
this.termDicts = {};
|
||||
this.kanjiDicts = {};
|
||||
}
|
||||
|
||||
addTermData(terms) {
|
||||
let index = this.terms.length;
|
||||
for (const [e, r, g, t] of terms) {
|
||||
this.storeIndex(this.termIndices, e, index);
|
||||
this.storeIndex(this.termIndices, r, index++);
|
||||
this.terms.push([e, r, g, t]);
|
||||
}
|
||||
addTermDict(name, dict) {
|
||||
this.termDicts[name] = dict;
|
||||
}
|
||||
|
||||
addKanjiData(kanji) {
|
||||
let index = this.kanji.length;
|
||||
for (const [c, k, o, g] of kanji) {
|
||||
this.storeIndex(this.kanjiIndices, c, index++);
|
||||
this.kanji.push([c, k, o, g]);
|
||||
}
|
||||
addKanjiDict(name, dict) {
|
||||
this.kanjiDicts[name] = dict;
|
||||
}
|
||||
|
||||
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(' ')};
|
||||
@ -56,12 +45,4 @@ class Dictionary {
|
||||
return {id: index, character: c, kunyomi: k, onyomi: o, glossary: g};
|
||||
});
|
||||
}
|
||||
|
||||
storeIndex(indices, term, index) {
|
||||
if (term.length > 0) {
|
||||
const indices = this.termIndices[term] || [];
|
||||
indices.push(index);
|
||||
this.termIndices[term] = indices;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -46,11 +46,11 @@ class Translator {
|
||||
this.deinflector.setRules(JSON.parse(response));
|
||||
break;
|
||||
case 'kanjidic':
|
||||
this.dictionary.addKanjiData(Translator.parseCsv(response));
|
||||
this.dictionary.addKanjiDict('kanjidic', JSON.parse(response));
|
||||
break;
|
||||
case 'edict':
|
||||
case 'enamdict':
|
||||
this.dictionary.addTermData(Translator.parseCsv(response));
|
||||
this.dictionary.addTermDict(key, JSON.parse(response));
|
||||
break;
|
||||
}
|
||||
|
||||
@ -164,15 +164,4 @@ class Translator {
|
||||
xhr.open('GET', chrome.extension.getURL(url), true);
|
||||
xhr.send();
|
||||
}
|
||||
|
||||
static parseCsv(data) {
|
||||
const result = [];
|
||||
for (const row of data.split('\n')) {
|
||||
if (row.length > 0) {
|
||||
result.push(row.split('\t'));
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ PARSED_TAGS = {
|
||||
'aux': 'auxiliary',
|
||||
'aux-adj': 'auxiliary adjective',
|
||||
'aux-v': 'auxiliary verb',
|
||||
'c': 'company name',
|
||||
'chn': 'children\'s language',
|
||||
'col': 'colloquialism',
|
||||
'comp': 'computer terminology',
|
||||
@ -53,12 +54,15 @@ PARSED_TAGS = {
|
||||
'eK': 'exclusively kanji',
|
||||
'ek': 'exclusively kana',
|
||||
'exp': 'Expressions (phrases, clauses, etc.)',
|
||||
'f': 'female given name',
|
||||
'fam': 'familiar language',
|
||||
'fem': 'female term or language',
|
||||
'food': 'food term',
|
||||
'g': 'given name, as-yet not classified by sex',
|
||||
'geom': 'geometry term',
|
||||
'gikun': 'gikun (meaning) reading',
|
||||
'gram': 'grammatical term',
|
||||
'h': 'full (usually family plus given) name of a particular person',
|
||||
'hon': 'honorific or respectful (sonkeigo) language',
|
||||
'hum': 'humble (kenjougo) language',
|
||||
'iK': 'word containing irregular kanji usage',
|
||||
@ -68,6 +72,7 @@ PARSED_TAGS = {
|
||||
'io': 'irregular okurigana usage',
|
||||
'iv': 'irregular verb',
|
||||
'ling': 'linguistics terminology',
|
||||
'm': 'male given name',
|
||||
'm-sl': 'manga slang',
|
||||
'male': 'male term or language',
|
||||
'male-sl': 'male slang',
|
||||
@ -84,16 +89,21 @@ PARSED_TAGS = {
|
||||
'obsc': 'obscure term',
|
||||
'ok': 'out-dated or obsolete kana usage',
|
||||
'on-mim': 'onomatopoeic or mimetic word',
|
||||
'p': 'place-name',
|
||||
'physics': 'physics terminology',
|
||||
'pn': 'pronoun',
|
||||
'poet': 'poetical term',
|
||||
'pol': 'polite (teineigo) language',
|
||||
'pr': 'product name',
|
||||
'pref': 'prefix',
|
||||
'prt': 'particle',
|
||||
'rare': 'rare (now replaced by "obsc")',
|
||||
's': 'surname',
|
||||
'sens': 'sensitive word',
|
||||
'sl': 'slang',
|
||||
'st': 'stations',
|
||||
'suf': 'suffix',
|
||||
'u': 'person name, either given or surname, as-yet unclassified',
|
||||
'uK': 'word usually written using kanji alone',
|
||||
'uk': 'word usually written using kana alone',
|
||||
'v1': 'Ichidan verb',
|
||||
|
Loading…
Reference in New Issue
Block a user