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) {
|
QueryString.parse = QueryString.decode = function(qs, sep, eq, options) {
|
||||||
sep = sep || '&';
|
sep = sep || '&';
|
||||||
eq = eq || '=';
|
eq = eq || '=';
|
||||||
|
const eqLen = eq.length;
|
||||||
var obj = {};
|
var obj = {};
|
||||||
|
|
||||||
if (typeof qs !== 'string' || qs.length === 0) {
|
if (typeof qs !== 'string' || qs.length === 0) {
|
||||||
@ -235,7 +236,7 @@ QueryString.parse = QueryString.decode = function(qs, sep, eq, options) {
|
|||||||
|
|
||||||
if (idx >= 0) {
|
if (idx >= 0) {
|
||||||
k = decodeStr(x.substring(0, idx), decode);
|
k = decodeStr(x.substring(0, idx), decode);
|
||||||
v = decodeStr(x.substring(idx + 1), decode);
|
v = decodeStr(x.substring(idx + eqLen), decode);
|
||||||
} else {
|
} else {
|
||||||
k = decodeStr(x, decode);
|
k = decodeStr(x, decode);
|
||||||
v = '';
|
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