querystring: Parse multiple separator characters
Fix querystring.parse to handle multiple separator characters PR-URL: https://github.com/nodejs/node/pull/3807 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Brian White <mscdex@mscdex.net> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
483a41c0ad
commit
a776a86859
@ -202,6 +202,7 @@ QueryString.stringify = QueryString.encode = function(obj, sep, eq, options) {
|
||||
QueryString.parse = QueryString.decode = function(qs, sep, eq, options) {
|
||||
sep = sep || '&';
|
||||
eq = eq || '=';
|
||||
const eqLen = eq.length;
|
||||
var obj = {};
|
||||
|
||||
if (typeof qs !== 'string' || qs.length === 0) {
|
||||
@ -235,7 +236,7 @@ QueryString.parse = QueryString.decode = function(qs, sep, eq, options) {
|
||||
|
||||
if (idx >= 0) {
|
||||
k = decodeStr(x.substring(0, idx), decode);
|
||||
v = decodeStr(x.substring(idx + 1), decode);
|
||||
v = decodeStr(x.substring(idx + eqLen), decode);
|
||||
} else {
|
||||
k = decodeStr(x, decode);
|
||||
v = '';
|
||||
|
24
test/parallel/test-querystring-multichar-separator.js
Normal file
24
test/parallel/test-querystring-multichar-separator.js
Normal file
@ -0,0 +1,24 @@
|
||||
'use strict';
|
||||
const common = require('../common');
|
||||
const assert = require('assert');
|
||||
const qs = require('querystring');
|
||||
|
||||
assert.deepEqual(
|
||||
qs.parse('foo=>bar&&bar=>baz', '&&', '=>'),
|
||||
{foo: 'bar', bar: 'baz'}
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
qs.stringify({foo: 'bar', bar: 'baz'}, '&&', '=>'),
|
||||
'foo=>bar&&bar=>baz'
|
||||
);
|
||||
|
||||
assert.deepEqual(
|
||||
qs.parse('foo==>bar, bar==>baz', ', ', '==>'),
|
||||
{foo: 'bar', bar: 'baz'}
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
qs.stringify({foo: 'bar', bar: 'baz'}, ', ', '==>'),
|
||||
'foo==>bar, bar==>baz'
|
||||
);
|
Loading…
x
Reference in New Issue
Block a user