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 | |
| parent | 08d92a4ddb3f9e008f572de2ce03ce6bf18599d6 (diff) | |
Use entity data from dictionary
| -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.                  // |