From 936e2034a7a6094811e10219f6c04bd101811e47 Mon Sep 17 00:00:00 2001 From: Leo Horie Date: Sat, 16 Aug 2014 17:06:27 -0400 Subject: [PATCH] fix handling of `+` in parseQuerystring --- mithril.js | 2 +- tests/mithril-tests.js | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/mithril.js b/mithril.js index b3f8d384..d4322b91 100644 --- a/mithril.js +++ b/mithril.js @@ -521,7 +521,7 @@ Mithril = m = new function app(window, undefined) { path.replace(matcher, function() { var keys = route.match(/:[^\/]+/g) || [] var values = [].slice.call(arguments, 1, -2) - for (var i = 0; i < keys.length; i++) routeParams[keys[i].replace(/:|\./g, "")] = decodeSpace(values[i]) + for (var i = 0; i < keys.length; i++) routeParams[keys[i].replace(/:|\./g, "")] = decodeURIComponent(values[i]) m.module(root, router[route]) }) return true diff --git a/tests/mithril-tests.js b/tests/mithril-tests.js index 3de5fe91..21091e14 100644 --- a/tests/mithril-tests.js +++ b/tests/mithril-tests.js @@ -1412,6 +1412,22 @@ function testMithril(mock) { mock.requestAnimationFrame.$resolve() //teardown return count == 2 }) + test(function() { + mock.requestAnimationFrame.$resolve() //setup + mock.location.search = "?" + + var root = mock.document.createElement("div") + var value + m.route(root, "/foo+bar", { + "/:arg": { + controller: function() {value = m.route.param("arg")}, + view: function(ctrl) { + return "" + } + } + }) + return value == "foo+bar" + }) //end m.route //m.prop