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}));