diff options
Diffstat (limited to 'ext/bg/js/translator.js')
-rw-r--r-- | ext/bg/js/translator.js | 72 |
1 files changed, 9 insertions, 63 deletions
diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index e534e0cb..9711cf8d 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -107,45 +107,20 @@ class Translator { findTerm(text) { return this.findTermGroups(text).then(deinflectGroups => { - let definitions = []; + const definitions = []; for (const key in deinflectGroups) { definitions.push(deinflectGroups[key]); } - definitions = definitions.sort((v1, v2) => { - const sl1 = v1.source.length; - const sl2 = v2.source.length; - if (sl1 > sl2) { - return -1; - } else if (sl1 < sl2) { - return 1; - } - - const s1 = v1.score; - const s2 = v2.score; - if (s1 > s2) { - return -1; - } else if (s1 < s2) { - return 1; - } - - const rl1 = v1.rules.length; - const rl2 = v2.rules.length; - if (rl1 < rl2) { - return -1; - } else if (rl1 > rl2) { - return 1; - } - - return v2.expression.localeCompare(v1.expression); - }); - let length = 0; for (const result of definitions) { length = Math.max(length, result.source.length); } - return {definitions, length}; + return { + length, + definitions: sortTermDefs(definitions) + }; }); } @@ -192,7 +167,7 @@ class Translator { desc: definition.entities[tag] || '', }; - this.applyTagMeta(tagItem); + applyTagMeta(tagItem, this.tagMeta); tagItems.push(tagItem); } @@ -208,7 +183,7 @@ class Translator { expression: definition.expression, reading: definition.reading, glossary: definition.glossary, - tags: Translator.sortTags(tagItems) + tags: sortTags(tagItems) }; } }); @@ -225,42 +200,13 @@ class Translator { desc: '', }; - this.applyTagMeta(tagItem); + applyTagMeta(tagItem, this.tagMeta); tagItems.push(tagItem); } - definition.tags = Translator.sortTags(tagItems); + definition.tags = sortTags(tagItems); } return definitions; } - - applyTagMeta(tag) { - const symbol = tag.name.split(':')[0]; - for (const prop in this.tagMeta[symbol] || {}) { - tag[prop] = this.tagMeta[symbol][prop]; - } - } - - static sortTags(tags) { - return tags.sort((v1, v2) => { - const order1 = v1.order; - const order2 = v2.order; - if (order1 < order2) { - return -1; - } else if (order1 > order2) { - return 1; - } - - const name1 = v1.name; - const name2 = v2.name; - if (name1 < name2) { - return -1; - } else if (name1 > name2) { - return 1; - } - - return 0; - }); - } } |