QueryString.unescape = function(s, decodeSpaces) {
- return QueryString.unescapeBuffer(s, decodeSpaces).toString();
+ try {
+ return decodeURIComponent(s);
+ } catch (e) {
+ return QueryString.unescapeBuffer(s, decodeSpaces).toString();
+ }
};
vstr = '';
}
- try {
- k = decodeURIComponent(kstr);
- v = decodeURIComponent(vstr);
- } catch (e) {
- k = QueryString.unescape(kstr, true);
- v = QueryString.unescape(vstr, true);
- }
+ k = QueryString.unescape(kstr, true);
+ v = QueryString.unescape(vstr, true);
if (!hasOwnProperty(obj, k)) {
obj[k] = v;
assert.equal(0xd8, b[17]);
assert.equal(0xa2, b[18]);
assert.equal(0xe6, b[19]);
+
+// test overriding .unescape
+var prevUnescape = qs.unescape;
+qs.unescape = function (str) {
+ return str.replace(/o/g, '_');
+};
+assert.deepEqual(qs.parse('foo=bor'), {f__: 'b_r'});
+qs.unescape = prevUnescape;