diff options
author | Teddy Wing | 2021-09-08 22:59:57 +0200 |
---|---|---|
committer | Teddy Wing | 2021-09-08 22:59:57 +0200 |
commit | 0f8cd3a8708a26049513c448dd89da568bab1fac (patch) | |
tree | 37579e9d45090fc94f490db553440189e49c3858 /background.js | |
parent | ba12ee4dce5cda80a8ecb43760555f10bce6ccb6 (diff) | |
parent | e45127b404ce194e389b447b68a33957ad9f3492 (diff) | |
download | Legibility-0f8cd3a8708a26049513c448dd89da568bab1fac.tar.bz2 |
Merge branch 'domain-wildcards'
Diffstat (limited to 'background.js')
-rw-r--r-- | background.js | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/background.js b/background.js index c898d8c..5bde79a 100644 --- a/background.js +++ b/background.js @@ -26,10 +26,46 @@ browser.runtime.onMessage.addListener(function(message) { var url = new URL(details.url); if (url.hostname === message.domain) { - browser.tabs.insertCSS( - details.tabId, - { file: '/css/' + message.domain + '.css' } - ); + wildcard_domains(message.domain) + .forEach(function(domain) { + browser.tabs.insertCSS( + details.tabId, + { file: '/css/' + domain + '.css' } + ); + }); } }); }); + + +// Build a list of wildcard domains from the given hostname. +// +// Example: +// +// wildcard_domains('en.wikipedia.org'); +// => [ '%', '%.org', '%.wikipedia.org', 'en.wikipedia.org' ] +function wildcard_domains (hostname) { + var domain_parts = hostname.split('.'); + var domains = []; + + for (var i = domain_parts.length - 1; i >= 0; i--) { + var domain; + + if (domains[domains.length - 1]) { + var domain = domain_parts[i] + '.' + domains[domains.length - 1]; + } + else { + var domain = domain_parts[i]; + } + + domains.push(domain); + } + + for (var i = 0; i < domains.length - 1; i++) { + domains[i] = '%.' + domains[i]; + } + + domains.unshift('%'); + + return domains; +} |