Created
April 3, 2016 09:15
-
-
Save yoanmarchal/3d1c0ee722d1d29ea72d97dd92b10620 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var router = (function () { | |
"use strict"; | |
var routes = []; | |
function addRoute(route, handler) { | |
routes.push({parts: route.split('/'), handler: handler}); | |
} | |
function load(route) { | |
window.location.hash = route; | |
} | |
function start() { | |
var path = window.location.hash.substr(1), | |
parts = path.split('/'), | |
partsLength = parts.length; | |
for (var i = 0; i < routes.length; i++) { | |
var route = routes[i]; | |
if (route.parts.length === partsLength) { | |
var params = []; | |
for (var j = 0; j < partsLength; j++) { | |
if (route.parts[j].substr(0, 1) === ':') { | |
params.push(parts[j]); | |
} else if (route.parts[j] !== parts[j]) { | |
break; | |
} | |
} | |
if (j === partsLength) { | |
route.handler.apply(undefined, params); | |
return; | |
} | |
} | |
} | |
} | |
$(window).on('hashchange', start); | |
return { | |
addRoute: addRoute, | |
load: load, | |
start: start | |
}; | |
}()); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment