From 9e7a76a1f121ad3622f9efd2867684560a9113db Mon Sep 17 00:00:00 2001
From: toasted-nutbread <toasted-nutbread@users.noreply.github.com>
Date: Fri, 26 Feb 2021 23:55:32 -0500
Subject: Improve dictionary priority (#1447)

* Refactor _sortDefinitions

* Remove use of useDictionaryPriority
---
 ext/js/language/translator.js | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

(limited to 'ext/js')

diff --git a/ext/js/language/translator.js b/ext/js/language/translator.js
index fc71bf7f..61d76b36 100644
--- a/ext/js/language/translator.js
+++ b/ext/js/language/translator.js
@@ -149,7 +149,7 @@ class Translator {
     async _findTermsSimple(text, options) {
         const {enabledDictionaryMap} = options;
         const [definitions, length] = await this._findTermsInternal(text, enabledDictionaryMap, options);
-        this._sortDefinitions(definitions, false);
+        this._sortDefinitions(definitions);
         return [definitions, length];
     }
 
@@ -157,7 +157,7 @@ class Translator {
         const {enabledDictionaryMap} = options;
         const [definitions, length] = await this._findTermsInternal(text, enabledDictionaryMap, options);
         await this._buildTermMeta(definitions, enabledDictionaryMap);
-        this._sortDefinitions(definitions, true);
+        this._sortDefinitions(definitions);
         return [definitions, length];
     }
 
@@ -167,7 +167,7 @@ class Translator {
 
         const groupedDefinitions = this._groupTerms(definitions, enabledDictionaryMap);
         await this._buildTermMeta(groupedDefinitions, enabledDictionaryMap);
-        this._sortDefinitions(groupedDefinitions, false);
+        this._sortDefinitions(groupedDefinitions);
 
         for (const definition of groupedDefinitions) {
             this._flagRedundantDefinitionTags(definition.definitions);
@@ -214,7 +214,7 @@ class Translator {
         }
 
         await this._buildTermMeta(definitionsMerged, enabledDictionaryMap);
-        this._sortDefinitions(definitionsMerged, false);
+        this._sortDefinitions(definitionsMerged);
 
         for (const definition of definitionsMerged) {
             this._flagRedundantDefinitionTags(definition.definitions);
@@ -470,7 +470,7 @@ class Translator {
             glossaryDefinitions.push(glossaryDefinition);
         }
 
-        this._sortDefinitions(glossaryDefinitions, true);
+        this._sortDefinitions(glossaryDefinitions);
 
         const termDetailsList = this._createTermDetailsListFromTermInfoMap(termInfoMap);
 
@@ -580,7 +580,7 @@ class Translator {
 
         const results = [];
         for (const groupDefinitions of groups.values()) {
-            this._sortDefinitions(groupDefinitions, true);
+            this._sortDefinitions(groupDefinitions);
             const definition = this._createGroupedTermDefinition(groupDefinitions);
             results.push(definition);
         }
@@ -1282,11 +1282,14 @@ class Translator {
         });
     }
 
-    _sortDefinitions(definitions, useDictionaryPriority) {
+    _sortDefinitions(definitions) {
         if (definitions.length <= 1) { return; }
         const stringComparer = this._stringComparer;
-        const compareFunction1 = (v1, v2) => {
-            let i = v2.source.length - v1.source.length;
+        const compareFunction = (v1, v2) => {
+            let i = v2.dictionaryPriority - v1.dictionaryPriority;
+            if (i !== 0) { return i; }
+
+            i = v2.source.length - v1.source.length;
             if (i !== 0) { return i; }
 
             i = v1.reasons.length - v2.reasons.length;
@@ -1307,11 +1310,7 @@ class Translator {
 
             return stringComparer.compare(expression1, expression2);
         };
-        const compareFunction2 = (v1, v2) => {
-            const i = v2.dictionaryPriority - v1.dictionaryPriority;
-            return (i !== 0) ? i : compareFunction1(v1, v2);
-        };
-        definitions.sort(useDictionaryPriority ? compareFunction2 : compareFunction1);
+        definitions.sort(compareFunction);
     }
 
     _sortDatabaseDefinitionsByIndex(definitions) {
-- 
cgit v1.2.3