Browse Source

Make QueryString.parse run faster

Use decodeURIComponent when appropriate, and only fall back to
querystring.decode if it throws, or if the character is a '+'.

Fix #2248
v0.7.4-release
Philip Tellis 13 years ago
committed by isaacs
parent
commit
5166758927
  1. 14
      lib/querystring.js

14
lib/querystring.js

@ -170,9 +170,17 @@ QueryString.parse = QueryString.decode = function(qs, sep, eq) {
}
qs.split(sep).forEach(function(kvp) {
var x = kvp.split(eq);
var k = QueryString.unescape(x[0], true);
var v = QueryString.unescape(x.slice(1).join(eq), true);
var x = kvp.split(eq), k, v, useQS=false;
try {
if (kvp.match(/\+/)) { // decodeURIComponent does not decode + to space
throw "has +";
}
k = decodeURIComponent(x[0]);
v = decodeURIComponent(x.slice(1).join(eq) || "");
} catch(e) {
k = QueryString.unescape(x[0], true);
v = QueryString.unescape(x.slice(1).join(eq), true);
}
if (!hasOwnProperty(obj, k)) {
obj[k] = v;

Loading…
Cancel
Save