diff options
| -rw-r--r-- | ext/bg/js/deinflector.js | 4 | ||||
| -rw-r--r-- | ext/bg/js/dictionary.js | 40 | ||||
| -rw-r--r-- | ext/bg/js/translator.js | 8 | 
3 files changed, 33 insertions, 19 deletions
| diff --git a/ext/bg/js/deinflector.js b/ext/bg/js/deinflector.js index 3c24ae3a..ec43f037 100644 --- a/ext/bg/js/deinflector.js +++ b/ext/bg/js/deinflector.js @@ -52,6 +52,10 @@ class Deinflection {              for (const v of variants) {                  let allowed = this.tags.length === 0;                  for (const tag of this.tags) { +                    // +                    // TODO: Handle addons through tags.json or rules.json +                    // +                      if (v.tagsIn.indexOf(tag) !== -1) {                          allowed = true;                          break; diff --git a/ext/bg/js/dictionary.js b/ext/bg/js/dictionary.js index 4645189d..90a40ee5 100644 --- a/ext/bg/js/dictionary.js +++ b/ext/bg/js/dictionary.js @@ -41,8 +41,29 @@ class Dictionary {              results = results.concat(                  indices.map(index => {                      const [e, r, t, ...g] = dict.defs[index]; -                    const tags = Dictionary.fixupTags(t.split(' ')); -                    return {id: index, expression: e, reading: r, glossary: g, tags: tags}; +                    const addons          = []; +                    const tags            = t.split(' '); + +                    // +                    // TODO: Handle addons through data. +                    // + +                    for (const tag of tags) { +                        if (tag.startsWith('v5') && tag !== 'v5') { +                            addons.push('v5'); +                        } else if (tag.startsWith('vs-')) { +                            addons.push('vs'); +                        } +                    } + +                    return { +                        id:         index, +                        expression: e, +                        reading:    r, +                        glossary:   g, +                        tags:       tags.concat(addons), +                        addons:     addons +                    };                  })              );          } @@ -63,19 +84,4 @@ class Dictionary {          return results;      } - -    static fixupTags(tags) { -        const results = []; -        for (const tag of tags) { -            if (tag.startsWith('v5') && tag !== 'v5') { -                results.push('v5'); -            } else if (tag.startsWith('vs-')) { -                results.push('vs'); -            } - -            results.push(tag); -        } - -        return results; -    }  } diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index edbf10cc..6be80581 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -162,7 +162,7 @@ class Translator {              let tagItems = [];              for (const tag of entry.tags) {                  const tagItem = this.tags[tag]; -                if (tagItem) { +                if (tagItem && entry.addons.indexOf(tag) === -1) {                      tagItems.push({                          class: tagItem.class || 'default',                          order: tagItem.order || Number.MAX_SAFE_INTEGER, @@ -170,6 +170,11 @@ class Translator {                          name:  tag                      });                  } + +                // +                // TODO: Handle tagging as popular through data. +                // +                  if (tag === 'P') {                      popular = true;                  } @@ -195,7 +200,6 @@ class Translator {                  return 0;              }); -              if (matched) {                  groups[entry.id] = {                      expression: entry.expression, |