MCPcopy
hub / github.com/fanmingming/live / parseFilters

Function parseFilters

m3u8/vue.js:6822–6902  ·  view source on GitHub ↗
(exp)

Source from the content-addressed store, hash-verified

6820 var validDivisionCharRE = /[\w).+\-_$\]]/;
6821
6822 function parseFilters (exp) {
6823 var inSingle = false;
6824 var inDouble = false;
6825 var inTemplateString = false;
6826 var inRegex = false;
6827 var curly = 0;
6828 var square = 0;
6829 var paren = 0;
6830 var lastFilterIndex = 0;
6831 var c, prev, i, expression, filters;
6832
6833 for (i = 0; i < exp.length; i++) {
6834 prev = c;
6835 c = exp.charCodeAt(i);
6836 if (inSingle) {
6837 if (c === 0x27 && prev !== 0x5C) { inSingle = false; }
6838 } else if (inDouble) {
6839 if (c === 0x22 && prev !== 0x5C) { inDouble = false; }
6840 } else if (inTemplateString) {
6841 if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }
6842 } else if (inRegex) {
6843 if (c === 0x2f && prev !== 0x5C) { inRegex = false; }
6844 } else if (
6845 c === 0x7C && // pipe
6846 exp.charCodeAt(i + 1) !== 0x7C &&
6847 exp.charCodeAt(i - 1) !== 0x7C &&
6848 !curly && !square && !paren
6849 ) {
6850 if (expression === undefined) {
6851 // first filter, end of expression
6852 lastFilterIndex = i + 1;
6853 expression = exp.slice(0, i).trim();
6854 } else {
6855 pushFilter();
6856 }
6857 } else {
6858 switch (c) {
6859 case 0x22: inDouble = true; break // "
6860 case 0x27: inSingle = true; break // '
6861 case 0x60: inTemplateString = true; break // `
6862 case 0x28: paren++; break // (
6863 case 0x29: paren--; break // )
6864 case 0x5B: square++; break // [
6865 case 0x5D: square--; break // ]
6866 case 0x7B: curly++; break // {
6867 case 0x7D: curly--; break // }
6868 }
6869 if (c === 0x2f) { // /
6870 var j = i - 1;
6871 var p = (void 0);
6872 // find first non-whitespace prev char
6873 for (; j >= 0; j--) {
6874 p = exp.charAt(j);
6875 if (p !== ' ') { break }
6876 }
6877 if (!p || !validDivisionCharRE.test(p)) {
6878 inRegex = true;
6879 }

Callers 3

getBindingAttrFunction · 0.85
parseTextFunction · 0.85
processAttrsFunction · 0.85

Calls 2

pushFilterFunction · 0.85
wrapFilterFunction · 0.85

Tested by

no test coverage detected