diff options
Diffstat (limited to 'ext/bg/js')
| -rw-r--r-- | ext/bg/js/dictionary.js | 11 | ||||
| -rw-r--r-- | ext/bg/js/translator.js | 17 | 
2 files changed, 17 insertions, 11 deletions
| diff --git a/ext/bg/js/dictionary.js b/ext/bg/js/dictionary.js index 49afc368..498eafcd 100644 --- a/ext/bg/js/dictionary.js +++ b/ext/bg/js/dictionary.js @@ -140,16 +140,17 @@ function dictTermsCompressTags(definitions) {  function dictTermsGroup(definitions, dictionaries) {      const groups = {};      for (const definition of definitions) { -        const key = [definition.source, definition.expression].concat(definition.reasons); +        const key = [definition.source, definition.expression]; +        key.push(...definition.reasons);          if (definition.reading) {              key.push(definition.reading);          } -        const group = groups[key]; -        if (group) { -            group.push(definition); +        const keyString = key.toString(); +        if (groups.hasOwnProperty(keyString)) { +            groups[keyString].push(definition);          } else { -            groups[key] = [definition]; +            groups[keyString] = [definition];          }      } diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index c6af1f4e..c89b43ff 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -186,7 +186,7 @@ class Translator {          let deinflections = await this.findTermDeinflections(text, titles, cache);          const textHiragana = jpKatakanaToHiragana(text);          if (text !== textHiragana) { -            deinflections = deinflections.concat(await this.findTermDeinflections(textHiragana, titles, cache)); +            deinflections.push(...await this.findTermDeinflections(textHiragana, titles, cache));          }          let definitions = []; @@ -235,7 +235,7 @@ class Translator {          let deinflections = [];          for (let i = text.length; i > 0; --i) {              const textSlice = text.slice(0, i); -            deinflections = deinflections.concat(await this.deinflector.deinflect(textSlice, definer)); +            deinflections.push(...await this.deinflector.deinflect(textSlice, definer));          }          return deinflections; @@ -247,7 +247,7 @@ class Translator {          const titles = Object.keys(dictionaries);          for (const c of text) {              if (!processed[c]) { -                definitions = definitions.concat(await this.database.findKanji(c, titles)); +                definitions.push(...await this.database.findKanji(c, titles));                  processed[c] = true;              }          } @@ -277,7 +277,7 @@ class Translator {      async buildTermFrequencies(definition, titles) {          let terms = [];          if (definition.expressions) { -            terms = terms.concat(definition.expressions); +            terms.push(...definition.expressions);          } else {              terms.push(definition);          } @@ -299,7 +299,7 @@ class Translator {      async expandTags(names, title) {          const tags = [];          for (const name of names) { -            const base = name.split(':')[0]; +            const base = Translator.getNameBase(name);              const meta = await this.database.findTagForTitle(base, title);              const tag = {name}; @@ -318,7 +318,7 @@ class Translator {      async expandStats(items, title) {          const stats = {};          for (const name in items) { -            const base = name.split(':')[0]; +            const base = Translator.getNameBase(name);              const meta = await this.database.findTagForTitle(base, title);              const group = stats[meta.category] = stats[meta.category] || []; @@ -346,4 +346,9 @@ class Translator {          return stats;      } + +    static getNameBase(name) { +        const pos = name.indexOf(':'); +        return (pos >= 0 ? name.substr(0, pos) : name); +    }  } |