Skip to content

Commit f46e516

Browse files
committed
directive parser: fix reserved arg handling
1 parent 56f80aa commit f46e516

File tree

2 files changed

+25
-7
lines changed

2 files changed

+25
-7
lines changed

src/parsers/directive.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,18 @@ function pushFilter () {
4141
*/
4242

4343
function processFilterArg (arg) {
44-
var stripped = reservedArgRE.test(arg)
45-
? arg
46-
: _.stripQuotes(arg)
47-
var dynamic = stripped === arg
48-
return {
49-
value: dynamic ? arg : stripped,
50-
dynamic: dynamic
44+
if (reservedArgRE.test(arg)) {
45+
return {
46+
value: arg,
47+
dynamic: false
48+
}
49+
} else {
50+
var stripped = _.stripQuotes(arg)
51+
var dynamic = stripped === arg
52+
return {
53+
value: dynamic ? arg : stripped,
54+
dynamic: dynamic
55+
}
5156
}
5257
}
5358

test/unit/specs/parsers/directive_spec.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,19 @@ describe('New Directive Parser', function () {
2323
expect(res.filters[1].args).toBeUndefined()
2424
})
2525

26+
it('reserved filter args', function () {
27+
var res = parse('arr | filterBy a in b')
28+
expect(res.expression).toBe('arr')
29+
expect(res.filters.length).toBe(1)
30+
expect(res.filters[0].args.length).toBe(3)
31+
expect(res.filters[0].args[0].value).toBe('a')
32+
expect(res.filters[0].args[0].dynamic).toBe(true)
33+
expect(res.filters[0].args[1].value).toBe('in')
34+
expect(res.filters[0].args[1].dynamic).toBe(false)
35+
expect(res.filters[0].args[2].value).toBe('b')
36+
expect(res.filters[0].args[2].dynamic).toBe(true)
37+
})
38+
2639
it('double pipe', function () {
2740
var res = parse('a || b | c')
2841
expect(res.expression).toBe('a || b')

0 commit comments

Comments
 (0)