URL Parser (Recursive)
A much cleaner implementation of the Angular URL parser I made earlier. Uses recursion.
by kshep92
JavaScript
var routes = {
users: {
index: '/users/',
show: '/users/:id',
profile: '/users/@:username',
filter: '/users/filter/',
}
};
function parseUrl(url, args) {
if(args == undefined || Object.keys(args).length == 0) return url;
var key, appender, formattedUrl,
params = url.match(/:[a-z]+/i);
if(params != null) {
key = params[0].replace(':', '');
url = url.replace(params[0], args[key]);
delete args[key];
} else {
appender = url.includes('?') ? '&' : '?';
key = Object.keys(args)[0];
url += appender+key+'='+encodeURIComponent(args[key]);
delete args[key];
}
return parseUrl(url, args);
}
console.debug(parseUrl(routes.users.filter, {username: 'kshep92', lastLogin: 'thursday', verified: true}));