parseFilters() — vue Function Reference
Architecture documentation for the parseFilters() function in filter-parser.ts from the vue codebase.
Entity Profile
Dependency Diagram
graph TD 864d3348_97c0_ef1e_0722_64a34582d8e6["parseFilters()"] 2e03f8d2_4a5a_f1cd_1d7b_db95ba63549e["getBindingAttr()"] 2e03f8d2_4a5a_f1cd_1d7b_db95ba63549e -->|calls| 864d3348_97c0_ef1e_0722_64a34582d8e6 a8b5582c_75a3_d739_c9b5_27e2ceb67bc3["processAttrs()"] a8b5582c_75a3_d739_c9b5_27e2ceb67bc3 -->|calls| 864d3348_97c0_ef1e_0722_64a34582d8e6 98ee1e5f_4546_f8dd_b03c_1579380b057f["parseText()"] 98ee1e5f_4546_f8dd_b03c_1579380b057f -->|calls| 864d3348_97c0_ef1e_0722_64a34582d8e6 0a68a901_b172_ab9b_7ad9_13a63c4556df["wrapFilter()"] 864d3348_97c0_ef1e_0722_64a34582d8e6 -->|calls| 0a68a901_b172_ab9b_7ad9_13a63c4556df style 864d3348_97c0_ef1e_0722_64a34582d8e6 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
src/compiler/parser/filter-parser.ts lines 3–104
export function parseFilters(exp: string): string {
let inSingle = false
let inDouble = false
let inTemplateString = false
let inRegex = false
let curly = 0
let square = 0
let paren = 0
let lastFilterIndex = 0
let c, prev, i, expression, filters
for (i = 0; i < exp.length; i++) {
prev = c
c = exp.charCodeAt(i)
if (inSingle) {
if (c === 0x27 && prev !== 0x5c) inSingle = false
} else if (inDouble) {
if (c === 0x22 && prev !== 0x5c) inDouble = false
} else if (inTemplateString) {
if (c === 0x60 && prev !== 0x5c) inTemplateString = false
} else if (inRegex) {
if (c === 0x2f && prev !== 0x5c) inRegex = false
} else if (
c === 0x7c && // pipe
exp.charCodeAt(i + 1) !== 0x7c &&
exp.charCodeAt(i - 1) !== 0x7c &&
!curly &&
!square &&
!paren
) {
if (expression === undefined) {
// first filter, end of expression
lastFilterIndex = i + 1
expression = exp.slice(0, i).trim()
} else {
pushFilter()
}
} else {
switch (c) {
case 0x22:
inDouble = true
break // "
case 0x27:
inSingle = true
break // '
case 0x60:
inTemplateString = true
break // `
case 0x28:
paren++
break // (
case 0x29:
paren--
break // )
case 0x5b:
square++
break // [
case 0x5d:
square--
break // ]
case 0x7b:
curly++
break // {
case 0x7d:
curly--
break // }
}
if (c === 0x2f) {
// /
let j = i - 1
let p
// find first non-whitespace prev char
for (; j >= 0; j--) {
p = exp.charAt(j)
if (p !== ' ') break
}
if (!p || !validDivisionCharRE.test(p)) {
inRegex = true
}
}
}
}
if (expression === undefined) {
expression = exp.slice(0, i).trim()
} else if (lastFilterIndex !== 0) {
pushFilter()
}
function pushFilter() {
;(filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim())
lastFilterIndex = i + 1
}
if (filters) {
for (i = 0; i < filters.length; i++) {
expression = wrapFilter(expression, filters[i])
}
}
return expression
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does parseFilters() do?
parseFilters() is a function in the vue codebase.
What does parseFilters() call?
parseFilters() calls 1 function(s): wrapFilter.
What calls parseFilters()?
parseFilters() is called by 3 function(s): getBindingAttr, parseText, processAttrs.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free