aboutsummaryrefslogtreecommitdiffstats
path: root/lib/LiquidDict.jsm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/LiquidDict.jsm')
-rw-r--r--lib/LiquidDict.jsm90
1 files changed, 45 insertions, 45 deletions
diff --git a/lib/LiquidDict.jsm b/lib/LiquidDict.jsm
index b45a5d7..c462427 100644
--- a/lib/LiquidDict.jsm
+++ b/lib/LiquidDict.jsm
@@ -2,7 +2,7 @@
ηMatrix - a browser extension to black/white list requests.
Copyright (C) 2014-2019 Raymond Hill
- Copyright (C) 2019-2020 Alessio Vanni
+ Copyright (C) 2019-2020-2021 Alessio Vanni
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
- Home: https://libregit.spks.xyz/heckyel/ematrix
+ Home: https://gitlab.com/vannilla/ematrix
uMatrix Home: https://github.com/gorhill/uMatrix
*/
@@ -40,13 +40,13 @@ function meltBucket(dict, len, bucket) {
--dict.frozenCount;
if (bucket.charAt(0) === ' ') {
- bucket.trim().split(' ').map(function (e) {
- map[e] = true;
- });
+ bucket.trim().split(' ').map(function (e) {
+ map[e] = true;
+ });
} else {
- for (let i=0; i<bucket.length; i+=len) {
- map[bucket.substring(i, len)] = true;
- }
+ for (let i=0; i<bucket.length; i+=len) {
+ map[bucket.substring(i, len)] = true;
+ }
}
return map;
@@ -55,10 +55,10 @@ function meltBucket(dict, len, bucket) {
function melt(dict) {
let buckets = dict.dict;
for (let key in buckets) {
- let bucket = buckets[key];
- if (typeof bucket === 'string') {
- buckets[key] = meltBucket(dict, key.charCodeAt(0) & 0xFF, bucket);
- }
+ let bucket = buckets[key];
+ if (typeof bucket === 'string') {
+ buckets[key] = meltBucket(dict, key.charCodeAt(0) & 0xFF, bucket);
+ }
}
}
@@ -69,7 +69,7 @@ function freezeBucket(dict, bucket) {
++dict.frozenCount;
if (wlen * words.length < dict.cutoff) {
- return ' ' + words.join(' ') + ' ';
+ return ' ' + words.join(' ') + ' ';
}
return words.sort().join('');
@@ -78,15 +78,15 @@ function freezeBucket(dict, bucket) {
LiquidDict.prototype.makeKey = function (word) {
let len = word.length;
if (len > 255) {
- len = 255;
+ len = 255;
}
let i = len >> 2;
return String.fromCharCode((word.charCodeAt(0) & 0x03) << 14
- | (word.charCodeAt(i) & 0x03) << 12
- | (word.charCodeAt(i+i) & 0x03) << 10
- | (word.charCodeAt(i+i+i) & 0x03) << 8
- | len);
+ | (word.charCodeAt(i) & 0x03) << 12
+ | (word.charCodeAt(i+i) & 0x03) << 10
+ | (word.charCodeAt(i+i+i) & 0x03) << 8
+ | len);
};
LiquidDict.prototype.test = function (word) {
@@ -94,15 +94,15 @@ LiquidDict.prototype.test = function (word) {
let bucket = this.dict[key];
if (bucket === undefined) {
- return false;
+ return false;
}
if (typeof bucket === 'object') {
- return bucket[word] !== undefined;
+ return bucket[word] !== undefined;
}
if (bucket.charAt(0) === ' ') {
- return bucket.indexOf(' ' + word + ' ') >= 0;
+ return bucket.indexOf(' ' + word + ' ') >= 0;
}
let len = word.length;
@@ -110,16 +110,16 @@ LiquidDict.prototype.test = function (word) {
let right = ~~(bucket.length / len + 0.5);
while (left < right) {
- let i = left + right >> 1;
- let needle = bucket.substr(len * i, len);
-
- if (word < needle) {
- right = i;
- } else if (word > needle) {
- left = i + 1;
- } else {
- return true;
- }
+ let i = left + right >> 1;
+ let needle = bucket.substr(len * i, len);
+
+ if (word < needle) {
+ right = i;
+ } else if (word > needle) {
+ left = i + 1;
+ } else {
+ return true;
+ }
}
return false;
@@ -128,26 +128,26 @@ LiquidDict.prototype.test = function (word) {
LiquidDict.prototype.add = function (word) {
let key = this.makeKey(word);
if (key === undefined) {
- return false;
+ return false;
}
let bucket = this.dict[key];
if (bucket === undefined) {
- this.dict[key] = bucket = {};
- ++this.bucketCount;
- bucket[word] = true;
- ++this.count;
+ this.dict[key] = bucket = {};
+ ++this.bucketCount;
+ bucket[word] = true;
+ ++this.count;
- return true;
+ return true;
} else if (typeof bucket === 'string') {
- this.dict[key] = bucket = meltBucket(this, word.len, bucket);
+ this.dict[key] = bucket = meltBucket(this, word.len, bucket);
}
if (bucket[word] === undefined) {
- bucket[word] = true;
- ++this.count;
+ bucket[word] = true;
+ ++this.count;
- return true;
+ return true;
}
++this.duplicateCount;
@@ -159,10 +159,10 @@ LiquidDict.prototype.freeze = function () {
let buckets = this.dict;
for (let key in buckets) {
- let bucket = buckets[key];
- if (typeof bucket === 'object') {
- buckets[key] = freezeBucket(this, bucket);
- }
+ let bucket = buckets[key];
+ if (typeof bucket === 'object') {
+ buckets[key] = freezeBucket(this, bucket);
+ }
}
};