File tree 2 files changed +21
-1
lines changed
test/unit/features/filter
2 files changed +21
-1
lines changed Original file line number Diff line number Diff line change @@ -40,14 +40,25 @@ export function parseFilters (exp: string): string {
40
40
case 0x22 : inDouble = true ; break // "
41
41
case 0x27 : inSingle = true ; break // '
42
42
case 0x60 : inTemplateString = true ; break // `
43
- case 0x2f : inRegex = true ; break // /
44
43
case 0x28 : paren ++ ; break // (
45
44
case 0x29 : paren -- ; break // )
46
45
case 0x5B : square ++ ; break // [
47
46
case 0x5D : square -- ; break // ]
48
47
case 0x7B : curly ++ ; break // {
49
48
case 0x7D : curly -- ; break // }
50
49
}
50
+ if ( c === 0x2f ) { // /
51
+ let j = i - 1
52
+ let p
53
+ // find first non-whitespace prev char
54
+ for ( ; j >= 0 ; j -- ) {
55
+ p = exp . charAt ( j )
56
+ if ( p !== ' ' ) break
57
+ }
58
+ if ( ! p || ! / [ \w $ ] / . test ( p ) ) {
59
+ inRegex = true
60
+ }
61
+ }
51
62
}
52
63
}
53
64
Original file line number Diff line number Diff line change @@ -69,6 +69,15 @@ describe('Filters', () => {
69
69
expect ( vm . $refs . test . pattern . toString ( ) ) . toBe ( '/a|b\\//' )
70
70
} )
71
71
72
+ it ( 'handle division' , ( ) => {
73
+ const vm = new Vue ( {
74
+ data : { a : 2 } ,
75
+ template : `<div>{{ 1/a / 4 | double }}</div>` ,
76
+ filters : { double : v => v * 2 }
77
+ } ) . $mount ( )
78
+ expect ( vm . $el . textContent ) . toBe ( String ( 1 / 4 ) )
79
+ } )
80
+
72
81
it ( 'arguments' , ( ) => {
73
82
const vm = new Vue ( {
74
83
template : `<div>{{ msg | add(a, 3) }}</div>` ,
You can’t perform that action at this time.
0 commit comments