MCPcopy Create free account
hub / github.com/TruthHun/BookStack / parseFilters

Function parseFilters

static/vuejs/vue.common.js:5347–5427  ·  view source on GitHub ↗
(exp)

Source from the content-addressed store, hash-verified

5345var validDivisionCharRE = /[\w).+\-_$\]]/;
5346
5347function parseFilters (exp) {
5348 var inSingle = false;
5349 var inDouble = false;
5350 var inTemplateString = false;
5351 var inRegex = false;
5352 var curly = 0;
5353 var square = 0;
5354 var paren = 0;
5355 var lastFilterIndex = 0;
5356 var c, prev, i, expression, filters;
5357
5358 for (i = 0; i < exp.length; i++) {
5359 prev = c;
5360 c = exp.charCodeAt(i);
5361 if (inSingle) {
5362 if (c === 0x27 && prev !== 0x5C) { inSingle = false; }
5363 } else if (inDouble) {
5364 if (c === 0x22 && prev !== 0x5C) { inDouble = false; }
5365 } else if (inTemplateString) {
5366 if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }
5367 } else if (inRegex) {
5368 if (c === 0x2f && prev !== 0x5C) { inRegex = false; }
5369 } else if (
5370 c === 0x7C && // pipe
5371 exp.charCodeAt(i + 1) !== 0x7C &&
5372 exp.charCodeAt(i - 1) !== 0x7C &&
5373 !curly && !square && !paren
5374 ) {
5375 if (expression === undefined) {
5376 // first filter, end of expression
5377 lastFilterIndex = i + 1;
5378 expression = exp.slice(0, i).trim();
5379 } else {
5380 pushFilter();
5381 }
5382 } else {
5383 switch (c) {
5384 case 0x22: inDouble = true; break // "
5385 case 0x27: inSingle = true; break // '
5386 case 0x60: inTemplateString = true; break // `
5387 case 0x28: paren++; break // (
5388 case 0x29: paren--; break // )
5389 case 0x5B: square++; break // [
5390 case 0x5D: square--; break // ]
5391 case 0x7B: curly++; break // {
5392 case 0x7D: curly--; break // }
5393 }
5394 if (c === 0x2f) { // /
5395 var j = i - 1;
5396 var p = (void 0);
5397 // find first non-whitespace prev char
5398 for (; j >= 0; j--) {
5399 p = exp.charAt(j);
5400 if (p !== ' ') { break }
5401 }
5402 if (!p || !validDivisionCharRE.test(p)) {
5403 inRegex = true;
5404 }

Callers 3

getBindingAttrFunction · 0.70
parseTextFunction · 0.70
processAttrsFunction · 0.70

Calls 2

pushFilterFunction · 0.70
wrapFilterFunction · 0.70

Tested by

no test coverage detected