mirror of https://github.com/status-im/consul.git
28 lines
872 B
JavaScript
28 lines
872 B
JavaScript
|
export default function(encode) {
|
||
|
return function stringify(obj, parent) {
|
||
|
return Object.entries(obj)
|
||
|
.reduce(function(prev, [key, value], i) {
|
||
|
// if the value is undefined do nothing
|
||
|
if (typeof value === 'undefined') {
|
||
|
return prev;
|
||
|
}
|
||
|
let prop = encode(key);
|
||
|
// if we have a parent, prefix the property with that
|
||
|
if (typeof parent !== 'undefined') {
|
||
|
prop = `${parent}[${prop}]`;
|
||
|
}
|
||
|
// if the value is null just print the prop
|
||
|
if (value === null) {
|
||
|
return prev.concat(prop);
|
||
|
}
|
||
|
// anything nested, recur
|
||
|
if (typeof value === 'object') {
|
||
|
return prev.concat(stringify(value, prop));
|
||
|
}
|
||
|
// anything else print prop=value
|
||
|
return prev.concat(`${prop}=${encode(value)}`);
|
||
|
}, [])
|
||
|
.join('&');
|
||
|
};
|
||
|
}
|