From a55a4500ee8262d4c9c50d7c769ebc8cb742bb93 Mon Sep 17 00:00:00 2001 From: Florrie Date: Sat, 23 Mar 2019 19:25:26 -0300 Subject: Rule Scope --- extension/lib.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 extension/lib.js (limited to 'extension/lib.js') diff --git a/extension/lib.js b/extension/lib.js new file mode 100644 index 0000000..acb5057 --- /dev/null +++ b/extension/lib.js @@ -0,0 +1,34 @@ +export function getURLParts(urlString) { + const {hostname, pathname} = new URL(urlString); + + return { + hostnameParts: hostname.split('.'), + pathnameParts: pathname.slice(1).split('/').filter(Boolean) + }; +} + +export function getRuleScoreOnPage(rule, urlString) { + const {hostnameMatch, pathnameMatch} = rule; + const {hostnameParts, pathnameParts} = getURLParts(urlString); + + // If we succeed at all, no matter how badly, the score should be non-zero! + let score = 1; + + for (let i = 0; i < hostnameMatch.length; i++) { + if (hostnameParts[hostnameParts.length - 1 - i] !== hostnameMatch[i]) { + return 0; + } + + score++; + } + + for (let i = 0; i < pathnameMatch.length; i++) { + if (pathnameParts[i] !== pathnameMatch[i]) { + return 0; + } + + score++; + } + + return score; +} -- cgit 1.3.0-6-gf8a5