Skip to content

Commit

Permalink
Improved router.url().
Browse files Browse the repository at this point in the history
  • Loading branch information
dizlexik committed Jul 9, 2015
1 parent 2af0731 commit f172aff
Showing 1 changed file with 7 additions and 11 deletions.
18 changes: 7 additions & 11 deletions lib/layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -131,28 +131,24 @@ Layer.prototype.captures = function (path) {
Layer.prototype.url = function (params) {
var args = params;
var url = this.path;
var toPath = pathToRegExp.compile(url);

// argument is of form { key: val }
if (typeof params != 'object') {
args = Array.prototype.slice.call(arguments);
}

if (args instanceof Array) {
for (var len = args.length, i=0; i<len; i++) {
url = url.replace(/:[^\/]+/, args[i]);
var tokens = pathToRegExp.parse(url);
var replace = {};
for (var len = tokens.length, i=0, j=0; i<len; i++) {
if (tokens[i].name) replace[tokens[i].name] = args[j++];
}
return toPath(replace);
}
else {
for (var key in args) {
url = url.replace(':' + key, args[key]);
}
return toPath(params);
}

url.split('/').forEach(function (component) {
url = url.replace(component, encodeURIComponent(component));
});

return url;
};

/**
Expand Down

0 comments on commit f172aff

Please sign in to comment.