Usage:

Router(rootURL, routeSpec, onUnmatched):

rootURL (string) the url prefix of all paths.

routeSpec (object)

onUnmatched (optional function(api, badPath, lastGoodRoute)) Called whenever an unmatched route is navigated. Parameters are: api (Router instance) badpath (string) lastGoodRoute (object) a route descriptor object for the last good route.

returns an api object: goto(path) - match the path to a route and navigate there href(pathName, vars) - build a path based on the name and supplied vars start(initialRoute) - listen to window.onhashchange for route changes current() - get the current route descriptor object

Example:

const router = Router(
	'#',
	{
		home: {
			path: '/',
			onenter: (r, route) => {
				console.log('At application home');
			},
			onexit: (r, route, newRoute) => {
				console.log(`Exiting from ${route.path} to ${newRoute.path}`);
			}
		},
		article: {
			path: '/article/:id',
			vars: { id: /[a-f0-9]{6,40}/ },
			onenter: (r, route) => {
				console.log('Opening Article', route.vars.id);
			},
			onexit: (r, route, newRoute) => {
				console.log('Closing Article', route.vars.id);
			}
		}
	},
	(r, path, lastGoodRoute) => {
		alert(`Unmatched route "${path}"`);
		r.goto(lastGoodRoute.path || 'home');
	}
);
router.start('/');