parseFilters() — vue Function Reference
Architecture documentation for the parseFilters() function in filter-parser.ts from the vue codebase.
Entity Profile
Dependency Diagram
graph TD e82e0ef9_225b_c510_670f_d4553c00a84c["parseFilters()"] 0d1a9a6d_9f27_26ff_a82e_63f0ab50e4ee["getBindingAttr()"] 0d1a9a6d_9f27_26ff_a82e_63f0ab50e4ee -->|calls| e82e0ef9_225b_c510_670f_d4553c00a84c 6f72c0fc_c9ca_496b_1bc7_d93b516eda63["processAttrs()"] 6f72c0fc_c9ca_496b_1bc7_d93b516eda63 -->|calls| e82e0ef9_225b_c510_670f_d4553c00a84c 0a22351a_c237_f9ca_df3f_a6e82bad69d8["parseText()"] 0a22351a_c237_f9ca_df3f_a6e82bad69d8 -->|calls| e82e0ef9_225b_c510_670f_d4553c00a84c d10888a2_284b_ee15_17cb_eedb45ae573b["wrapFilter()"] e82e0ef9_225b_c510_670f_d4553c00a84c -->|calls| d10888a2_284b_ee15_17cb_eedb45ae573b style e82e0ef9_225b_c510_670f_d4553c00a84c 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