3
3
export function parseFilters ( exp : string ) : string {
4
4
let inSingle = false
5
5
let inDouble = false
6
+ let inTemplateString = false
6
7
let curly = 0
7
8
let square = 0
8
9
let paren = 0
@@ -18,6 +19,9 @@ export function parseFilters (exp: string): string {
18
19
} else if ( inDouble ) {
19
20
// check double quote
20
21
if ( c === 0x22 && prev !== 0x5C ) inDouble = ! inDouble
22
+ } else if ( inTemplateString ) {
23
+ // check template literal
24
+ if ( c === 0x60 && prev !== 0x5C ) inTemplateString = ! inTemplateString
21
25
} else if (
22
26
c === 0x7C && // pipe
23
27
exp . charCodeAt ( i + 1 ) !== 0x7C &&
@@ -33,14 +37,15 @@ export function parseFilters (exp: string): string {
33
37
}
34
38
} else {
35
39
switch ( c ) {
36
- case 0x22 : inDouble = true ; break // "
37
- case 0x27 : inSingle = true ; break // '
38
- case 0x28 : paren ++ ; break // (
39
- case 0x29 : paren -- ; break // )
40
- case 0x5B : square ++ ; break // [
41
- case 0x5D : square -- ; break // ]
42
- case 0x7B : curly ++ ; break // {
43
- case 0x7D : curly -- ; break // }
40
+ case 0x22 : inDouble = true ; break // "
41
+ case 0x27 : inSingle = true ; break // '
42
+ case 0x60 : inTemplateString = true ; break // `
43
+ case 0x28 : paren ++ ; break // (
44
+ case 0x29 : paren -- ; break // )
45
+ case 0x5B : square ++ ; break // [
46
+ case 0x5D : square -- ; break // ]
47
+ case 0x7B : curly ++ ; break // {
48
+ case 0x7D : curly -- ; break // }
44
49
}
45
50
}
46
51
}
0 commit comments