|
|
@ -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; |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|