Skip to content

Commit 61e3b07

Browse files
authored
Merge pull request #31 from gameldar/29-unnamed-parameters
Only add the parameters to the parameters map if they have a name
2 parents bea5177 + b42a055 commit 61e3b07

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/lib.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,9 @@ impl<T> Router<T> {
195195
let param_names = metadata.param_names.clone();
196196

197197
for (i, capture) in nfa_match.captures.iter().enumerate() {
198-
map.insert(param_names[i].to_string(), capture.to_string());
198+
if !param_names[i].is_empty() {
199+
map.insert(param_names[i].to_string(), capture.to_string());
200+
}
199201
}
200202

201203
let handler = self.handlers.get(&nfa_match.state).unwrap();
@@ -345,6 +347,21 @@ fn star() {
345347
assert_eq!(m.params, params("foo", "bar/foo"));
346348
}
347349

350+
#[test]
351+
fn unnamed_parameters() {
352+
let mut router = Router::new();
353+
354+
router.add("/foo/:/bar", "test".to_string());
355+
router.add("/foo/:bar/*", "test2".to_string());
356+
let m = router.recognize("/foo/test/bar").unwrap();
357+
assert_eq!(*m.handler, "test");
358+
assert_eq!(m.params, Params::new());
359+
360+
let m = router.recognize("/foo/test/blah").unwrap();
361+
assert_eq!(*m.handler, "test2");
362+
assert_eq!(m.params, params("bar", "test"));
363+
}
364+
348365
#[allow(dead_code)]
349366
fn params(key: &str, val: &str) -> Params {
350367
let mut map = Params::new();

0 commit comments

Comments
 (0)