mirror of
https://github.com/gorhill/uMatrix.git
synced 2024-06-03 02:44:57 +12:00
this brings logger's filter exp. parser improvements from uBlock
This commit is contained in:
parent
a2e5fd671e
commit
5997dec5d1
|
@ -541,14 +541,17 @@ var rowFilterer = (function() {
|
|||
var parseInput = function() {
|
||||
filters = [];
|
||||
|
||||
var rawPart, not, hardBeg, hardEnd, reStr;
|
||||
var rawPart, hardBeg, hardEnd;
|
||||
var raw = uDom('#filterInput').val().trim();
|
||||
var rawParts = raw.split(/\s+/);
|
||||
var i = rawParts.length;
|
||||
while ( i-- ) {
|
||||
var reStr, reStrs = [], not = false;
|
||||
var n = rawParts.length;
|
||||
for ( var i = 0; i < n; i++ ) {
|
||||
rawPart = rawParts[i];
|
||||
not = rawPart.charAt(0) === '!';
|
||||
if ( not ) {
|
||||
if ( rawPart.charAt(0) === '!' ) {
|
||||
if ( reStrs.length === 0 ) {
|
||||
not = true;
|
||||
}
|
||||
rawPart = rawPart.slice(1);
|
||||
}
|
||||
hardBeg = rawPart.charAt(0) === '|';
|
||||
|
@ -563,18 +566,25 @@ var rowFilterer = (function() {
|
|||
continue;
|
||||
}
|
||||
// https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions
|
||||
reStr = rawPart.replace(/[.+?^${}()|[\]\\]/g, '\\$&')
|
||||
.replace(/\*/g, '.*');
|
||||
reStr = rawPart.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||||
if ( hardBeg ) {
|
||||
reStr = '(?:^|\\s)' + reStr;
|
||||
}
|
||||
if ( hardEnd ) {
|
||||
reStr += '(?:\\s|$)';
|
||||
}
|
||||
reStrs.push(reStr);
|
||||
if ( i < (n - 1) && rawParts[i + 1] === '||' ) {
|
||||
i += 1;
|
||||
continue;
|
||||
}
|
||||
reStr = reStrs.length === 1 ? reStrs[0] : reStrs.join('|');
|
||||
filters.push({
|
||||
re: new RegExp(reStr, 'i'),
|
||||
r: !not
|
||||
});
|
||||
reStrs = [];
|
||||
not = false;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue