Add: support inclusions

This commit is contained in:
eight04 2021-12-07 13:13:06 +08:00
parent 9d1243073b
commit 04a797aa86
2 changed files with 20 additions and 3 deletions

View File

@ -193,6 +193,7 @@ const styleMan = (() => {
for (const style of styles) {
let excluded = false;
let excludedScheme = false;
let included = false;
let sloppy = false;
let sectionMatched = false;
const match = urlMatchStyle(query, style);
@ -200,6 +201,9 @@ const styleMan = (() => {
// if (match === false) {
// continue;
// }
if (match === 'included') {
included = true;
}
if (match === 'excluded') {
excluded = true;
}
@ -219,8 +223,9 @@ const styleMan = (() => {
break;
}
}
if (sectionMatched) {
result.push(/** @namespace StylesByUrlResult */ {style, excluded, sloppy, excludedScheme});
if (sectionMatched || included) {
result.push(/** @namespace StylesByUrlResult */ {
style, excluded, sloppy, excludedScheme, sectionMatched, included});
}
}
return result;
@ -472,7 +477,12 @@ const styleMan = (() => {
// get styles matching a URL, including sloppy regexps and excluded items.
function getAppliedCode(query, data) {
if (urlMatchStyle(query, data) !== true) {
const result = urlMatchStyle(query, data);
if (result === 'included') {
// return all sections
return data.sections.map(s => s.code);
}
if (result !== true) {
return;
}
const code = [];
@ -568,6 +578,12 @@ const styleMan = (() => {
if (!colorScheme.shouldIncludeStyle(style)) {
return 'excludedScheme';
}
if (
style.inclusions &&
style.inclusions.some(r => compileExclusion(r).test(query.urlWithoutParams))
) {
return 'included';
}
return true;
}

View File

@ -380,6 +380,7 @@ function createStyleElement(style) {
'';
});
entry.classList.toggle('force-applied', style.included);
entry.classList.toggle('not-applied', style.excluded || style.sloppy || style.excludedScheme);
entry.classList.toggle('regexp-partial', style.sloppy);