diff options
author | Alex Yatskov <alex@foosoft.net> | 2016-08-06 23:04:03 -0700 |
---|---|---|
committer | Alex Yatskov <alex@foosoft.net> | 2016-08-06 23:04:03 -0700 |
commit | 9468797b874bc39e8a9730fc67bb97fd2494f76f (patch) | |
tree | 178c28a9d482460818e5f16983cadc351a10702e /ext | |
parent | 08d92a4ddb3f9e008f572de2ce03ce6bf18599d6 (diff) |
Use entity data from dictionary
Diffstat (limited to 'ext')
-rw-r--r-- | ext/bg/js/dictionary.js | 12 | ||||
-rw-r--r-- | ext/bg/js/translator.js | 26 |
2 files changed, 24 insertions, 14 deletions
diff --git a/ext/bg/js/dictionary.js b/ext/bg/js/dictionary.js index b18e17ca..073b8f55 100644 --- a/ext/bg/js/dictionary.js +++ b/ext/bg/js/dictionary.js @@ -19,7 +19,7 @@ class Dictionary { constructor() { - this.termDicts = {}; + this.termDicts = {}; this.kanjiDicts = {}; } @@ -36,22 +36,21 @@ class Dictionary { for (let name in this.termDicts) { const dict = this.termDicts[name]; - const indexStr = dict.i[term] || null; - if (indexStr === null) { + if (!(term in dict.i)) { continue; } - const indices = indexStr.split(' ').map(Number); + const indices = dict.i[term].split(' ').map(Number); results = results.concat( indices.map(index => { const [e, r, t, ...g] = dict.d[index]; - const addons = []; - const tags = t.split(' '); + const tags = t.split(' '); // // TODO: Handle addons through data. // + const addons = []; for (let tag of tags) { if (tag.startsWith('v5') && tag !== 'v5') { addons.push('v5'); @@ -66,6 +65,7 @@ class Dictionary { reading: r, glossary: g, tags: tags.concat(addons), + entities: dict.e, addons: addons }; }) diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index bf1538e2..000271b6 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -168,16 +168,26 @@ class Translator { let popular = false; let tagItems = []; for (let tag of entry.tags) { - const tagItem = this.tags[tag]; - if (tagItem && entry.addons.indexOf(tag) === -1) { - tagItems.push({ - class: tagItem.class || 'default', - order: tagItem.order || Number.MAX_SAFE_INTEGER, - desc: tagItem.desc, - name: tag - }); + if (entry.addons.indexOf(tag) !== -1) { + continue; } + const tagItem = { + class: 'default', + order: Number.MAX_SAFE_INTEGER, + desc: entry.entities[tag] || '', + name: tag + }; + + const tagMeta = this.tags[tag]; + if (tagMeta) { + for (const key in tagMeta) { + tagItem[key] = tagMeta[key] || tagItem[key]; + } + } + + tagItems.push(tagItem); + // // TODO: Handle tagging as popular through data. // |