1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-28 05:03:59 +03:00

Handle underride and override rules with patterns

This commit is contained in:
lukebarnard
2018-01-15 15:16:22 +00:00
parent 751fe7349a
commit 56612751f9

View File

@@ -30,6 +30,10 @@ function PushProcessor(client) {
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}; };
const cachedGlobToRegex = {
// $glob: RegExp,
};
const matchingRuleFromKindSet = (ev, kindset, device) => { const matchingRuleFromKindSet = (ev, kindset, device) => {
for (let ruleKindIndex = 0; for (let ruleKindIndex = 0;
ruleKindIndex < RULEKINDS_IN_ORDER.length; ruleKindIndex < RULEKINDS_IN_ORDER.length;
@@ -95,10 +99,7 @@ function PushProcessor(client) {
rawrule.conditions.push({ rawrule.conditions.push({
'kind': 'event_match', 'kind': 'event_match',
'key': 'content.body', 'key': 'content.body',
'regex': new RegExp( 'pattern': tprule.pattern,
'(^|\\W)' + globToRegexp(tprule.pattern) + '(\\W|$)',
'i', // Case insensitive
),
}); });
break; break;
} }
@@ -219,7 +220,23 @@ function PushProcessor(client) {
return cond.value === val; return cond.value === val;
} }
return !!val.match(cond.regex); let regex;
if (cond.key == 'content.body') {
regex = createCachedRegex('(^|\\W)', cond.pattern, '(\\W|$)');
} else {
regex = createCachedRegex('^', cond.pattern, '$');
}
return !!val.match(regex);
};
const createCachedRegex = function(prefix, glob, suffix) {
cachedGlobToRegex[glob] = new RegExp(
prefix + globToRegexp(glob) + suffix,
'i', // Case insensitive
);
return cachedGlobToRegex[glob];
}; };
const globToRegexp = function(glob) { const globToRegexp = function(glob) {