tiny-querystring
Version:
Tiny parsing and formatting URL query strings for Node.js and browser
41 lines (38 loc) • 1.08 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(['exports'], factory);
} else if (typeof exports !== "undefined") {
factory(exports);
} else {
var mod = {
exports: {}
};
factory(mod.exports);
global.tinyQuerystring = mod.exports;
}
})(this, function (exports) {
'use strict';
exports.__esModule = true;
exports.parse = parse;
exports.stringify = stringify;
function parse(str) {
var decode = decodeURIComponent;
return (str + '').replace(/\+/g, ' ').split('&').filter(Boolean).reduce(function (obj, item, index) {
var ref = item.split('=');
var key = decode(ref[0] || '');
var val = decode(ref[1] || '');
var prev = obj[key];
obj[key] = prev === undefined ? val : [].concat(prev, val);
return obj;
}, {});
};
function stringify(obj) {
var encode = encodeURIComponent;
return Object.keys(obj || {}).reduce(function (arr, key) {
[].concat(obj[key]).forEach(function (v) {
arr.push(encode(key) + '=' + encode(v));
});
return arr;
}, []).join('&').replace(/\s/g, '+');
};
});