1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- var trim = require('./trim');
- var each = require('./each');
- var isUndef = require('./isUndef');
- var isArr = require('./isArr');
- var map = require('./map');
- var isEmpty = require('./isEmpty');
- var filter = require('./filter');
- var isObj = require('./isObj');
- exports = {
- parse: function(str) {
- var ret = {};
- str = trim(str).replace(regIllegalChars, '');
- each(str.split('&'), function(param) {
- var parts = param.split('=');
- var key = parts.shift(),
- val = parts.length > 0 ? parts.join('=') : null;
- key = decodeURIComponent(key);
- val = decodeURIComponent(val);
- if (isUndef(ret[key])) {
- ret[key] = val;
- } else if (isArr(ret[key])) {
- ret[key].push(val);
- } else {
- ret[key] = [ret[key], val];
- }
- });
- return ret;
- },
- stringify: function(obj, arrKey) {
- return filter(
- map(obj, function(val, key) {
- if (isObj(val) && isEmpty(val)) return '';
- if (isArr(val)) return exports.stringify(val, key);
- return (
- (arrKey
- ? encodeURIComponent(arrKey)
- : encodeURIComponent(key)) +
- '=' +
- encodeURIComponent(val)
- );
- }),
- function(str) {
- return str.length > 0;
- }
- ).join('&');
- }
- };
- var regIllegalChars = /^(\?|#|&)/g;
- module.exports = exports;
|