Skip to content

Commit 9e25f05

Browse files
committed
fix empty string filter args being casted into undefined (unblock vuejs#1135)
1 parent 365cca4 commit 9e25f05

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

src/parsers/directive.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ var _ = require('../util')
22
var Cache = require('../cache')
33
var cache = new Cache(1000)
44
var argRE = /^[^\{\?]+$|^'[^']*'$|^"[^"]*"$/
5-
var filterTokenRE = /[^\s'"]+|'[^']+'|"[^"]+"/g
5+
var filterTokenRE = /[^\s'"]+|'[^']*'|"[^"]*"/g
66
var reservedArgRE = /^in$|^-?\d+/
77

88
/**
@@ -71,9 +71,10 @@ function processFilterArg (arg) {
7171
var stripped = reservedArgRE.test(arg)
7272
? arg
7373
: _.stripQuotes(arg)
74+
var dynamic = stripped === false
7475
return {
75-
value: stripped || arg,
76-
dynamic: !stripped
76+
value: dynamic ? arg : stripped,
77+
dynamic: dynamic
7778
}
7879
}
7980

test/unit/specs/parsers/directive_spec.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,20 @@ describe('Directive Parser', function () {
1818
})
1919

2020
it('with filters', function () {
21-
var res = parse(' arg : exp | abc de \'ok\' | bcd')
21+
var res = parse(' arg : exp | abc de \'ok\' \'\' | bcd')
2222
expect(res.length).toBe(1)
2323
expect(res[0].expression).toBe('exp')
2424
expect(res[0].arg).toBe('arg')
25-
expect(res[0].raw).toBe('arg : exp | abc de \'ok\' | bcd')
25+
expect(res[0].raw).toBe('arg : exp | abc de \'ok\' \'\' | bcd')
2626
expect(res[0].filters.length).toBe(2)
2727
expect(res[0].filters[0].name).toBe('abc')
28-
expect(res[0].filters[0].args.length).toBe(2)
28+
expect(res[0].filters[0].args.length).toBe(3)
2929
expect(res[0].filters[0].args[0].value).toBe('de')
3030
expect(res[0].filters[0].args[0].dynamic).toBe(true)
3131
expect(res[0].filters[0].args[1].value).toBe('ok')
3232
expect(res[0].filters[0].args[1].dynamic).toBe(false)
33+
expect(res[0].filters[0].args[2].value).toBe('')
34+
expect(res[0].filters[0].args[2].dynamic).toBe(false)
3335
expect(res[0].filters[1].name).toBe('bcd')
3436
expect(res[0].filters[1].args).toBeUndefined()
3537
})

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy