Skip to content

Instantly share code, notes, and snippets.

@c7x43t
Created May 28, 2019 17:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save c7x43t/34cf64d6319b9cfab1e759905e45f476 to your computer and use it in GitHub Desktop.
Save c7x43t/34cf64d6319b9cfab1e759905e45f476 to your computer and use it in GitHub Desktop.
// unfinieshed
function matchAll(regEx,str,group=0){
regEx.lastIntex=0;
var match;
var results=[];
while((match=regEx.exec(str))!==null){
results.push(match[group]);
}
return results;
}
var zeroArray=[];
// var defaultKey="__DEFAULT__"+((Math.random() * 1e9) >>> 0);
var routes={};
var routeMatcher=/(\/([\w:*]+))/g;
function page(route,...callbacks){
var route=matchAll(routeMatcher,route,2);
var pRoutes=routes;
var sRoute;
var variables={};
for(var i=0;i<route.length;i++){
if(route[i][0]===":"){
sRoute=route[i].slice(1);
variables[i]=sRoute;
}else{
sRoute=route[i];
}
if(!pRoutes[sRoute]) pRoutes[sRoute]={}
pRoutes=pRoutes[sRoute];
}
pRoutes.handlers?callbacks.map(c=>pRoutes.handlers.push([c,variables])):pRoutes.handlers=callbacks.map(c=>[c,variables]);
return {querystring:querystring,route:route}
}
function pageResolve(route){
var route=route.split('?');
var querystring=route[1]?route[1].split('&'):zeroArray;
var route=matchAll(routeMatcher,route[0],2);
var pRoutes=routes;;
for(var i=0;i<route.length;i++){
pRoutes=pRoutes.hasOwnProperty?;
}
}
page('/a/*/:c/',e=>e);
routes;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment