From 7d706df66b4cd68d6ac430c2e3e8b9f3a7f4b6ae Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Thu, 7 Jan 2021 20:24:22 -0500 Subject: [PATCH] Update DictionaryDataUtil to be able to be used in a sandbox frame (#1206) --- .eslintrc.json | 6 ++++-- ext/mixed/js/dictionary-data-util.js | 30 ++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 4839447e..f9ca5814 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -84,7 +84,8 @@ { "files": [ "ext/mixed/js/core.js", - "ext/bg/js/template-renderer.js" + "ext/bg/js/template-renderer.js", + "ext/mixed/js/dictionary-data-util.js" ], "env": { "webextensions": false @@ -94,7 +95,8 @@ "files": ["ext/**/*.js"], "excludedFiles": [ "ext/mixed/js/core.js", - "ext/bg/js/template-renderer.js" + "ext/bg/js/template-renderer.js", + "ext/mixed/js/dictionary-data-util.js" ], "globals": { "errorToJson": "readonly", diff --git a/ext/mixed/js/dictionary-data-util.js b/ext/mixed/js/dictionary-data-util.js index c049d591..8d8772fe 100644 --- a/ext/mixed/js/dictionary-data-util.js +++ b/ext/mixed/js/dictionary-data-util.js @@ -52,8 +52,8 @@ class DictionaryDataUtil { const exclusiveExpressions = []; const exclusiveReadings = []; const resultExpressions = result.expressions; - if (!areSetsEqual(resultExpressions, allExpressions)) { - exclusiveExpressions.push(...getSetIntersection(resultExpressions, allExpressions)); + if (!this._areSetsEqual(resultExpressions, allExpressions)) { + exclusiveExpressions.push(...this._getSetIntersection(resultExpressions, allExpressions)); } if (multipleReadings) { exclusiveReadings.push(result.reading); @@ -71,6 +71,8 @@ class DictionaryDataUtil { return results2; } + // Private + static _findExistingPitchAccentInfo(reading, position, tags, pitchAccentInfoList) { for (const pitchInfo of pitchAccentInfoList) { if ( @@ -98,4 +100,28 @@ class DictionaryDataUtil { return true; } + + static _areSetsEqual(set1, set2) { + if (set1.size !== set2.size) { + return false; + } + + for (const value of set1) { + if (!set2.has(value)) { + return false; + } + } + + return true; + } + + static _getSetIntersection(set1, set2) { + const result = []; + for (const value of set1) { + if (set2.has(value)) { + result.push(value); + } + } + return result; + } }