Skip to content

Commit b5130bb

Browse files
committed
fix(urlMatcherFactory): include the slash in squashed params
Squashed params were ignoring a missing slash before the param so things like /users123 would match /url/:id Fixes #2064
1 parent 4b978ac commit b5130bb

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

src/urlMatcherFactory.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,10 @@ function UrlMatcher(pattern, config, parentMatcher) {
103103
if (!pattern) return result;
104104
switch(squash) {
105105
case false: surroundPattern = ['(', ')' + (optional ? "?" : "")]; break;
106-
case true: surroundPattern = ['?(', ')?']; break;
106+
case true:
107+
result = result.replace(/\/$/, '');
108+
surroundPattern = ['(?:\/(', ')|\/)?'];
109+
break;
107110
default: surroundPattern = ['(' + squash + "|", ')?']; break;
108111
}
109112
return result + surroundPattern[0] + pattern + surroundPattern[1];

test/urlMatcherFactorySpec.js

+1
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,7 @@ describe("urlMatcherFactory", function () {
588588
params: { id: { value: null, squash: true } }
589589
});
590590
expect(m.exec('/users/1138')).toEqual({ id: 1138 });
591+
expect(m.exec('/users1138')).toBeNull();
591592
expect(m.exec('/users/').id).toBeNull();
592593
expect(m.exec('/users').id).toBeNull();
593594
});

0 commit comments

Comments
 (0)