move the map without the hash changing.
*/
OSM.Router = function (map, rts) {
- var escapeRegExp = /[\-{}\[\]+?.,\\\^$|#\s]/g;
+ var escapeRegExp = /[-{}[\]+?.,\\^$|#\s]/g;
var optionalParam = /\((.*?)\)/g;
- var namedParam = /(\(\?)?:\w+/g;
- var splatParam = /\*\w+/g;
+ var namedParam = /(\(\?)?:\w+/g;
+ var splatParam = /\*\w+/g;
function Route(path, controller) {
var regexp = new RegExp("^" +
path.replace(escapeRegExp, "\\$&")
.replace(optionalParam, "(?:$1)?")
.replace(namedParam, function (match, optional) {
- return optional ? match : "([^\/]+)";
+ return optional ? match : "([^/]+)";
})
.replace(splatParam, "(.*?)") + "(?:\\?.*)?$");
};
var currentPath = window.location.pathname.replace(/(.)\/$/, "$1") + window.location.search,
- currentRoute = routes.recognize(currentPath),
- currentHash = location.hash || OSM.formatHash(map);
+ currentRoute = routes.recognize(currentPath),
+ currentHash = location.hash || OSM.formatHash(map);
var router = {};
$(window).on("popstate", function (e) {
if (!e.originalEvent.state) return; // Is it a real popstate event or just a hash change?
var path = window.location.pathname + window.location.search,
- route = routes.recognize(path);
+ route = routes.recognize(path);
if (path === currentPath) return;
currentRoute.run("unload", null, route === currentRoute);
currentPath = path;
router.route = function (url) {
var path = url.replace(/#.*/, ""),
- route = routes.recognize(path);
+ route = routes.recognize(path);
if (!route) return false;
currentRoute.run("unload", null, route === currentRoute);
var state = OSM.parseHash(url);