import isString from 'lodash.isstring';
import isFunction from 'lodash.isfunction';
import { default as isArray } from './is-array';
/**
* 解析 URL query string
*
* @param {string} qs 需要解析的 URL query string
* @param {string} sep 用于界定键值对的子字符串。默认为 '&'
* @param {string} eq 用于界定 key 和 value 的子字符串。默认为 '='
* @param {object} options 自定义解析行为
* @param {function} options.decodeURIComponent 自定义解码
*/
function parse(qs, sep, eq, options) {
if (sep === void 0) { sep = '&'; }
if (eq === void 0) { eq = '='; }
if (!isString(qs)) {
return {};
}
// 对传入整个url的情况进行过滤,仅取参数部分
var keys = qs.replace(/^.*\?/, '').split(sep);
if (keys.length === 0) {
return {};
}
var decode = decodeURIComponent;
if (options && isFunction(options.decodeURIComponent)) {
decode = options.decodeURIComponent;
}
var kv = {};
var klen = keys.length;
for (var i = 0; i < klen; i++) {
var kvs = keys[i].split(eq);
var k = decode(kvs[0]);
var v = decode(kvs[1]);
if (kv[k] === undefined) {
kv[k] = v;
}
else if (isArray(kv[k])) {
kv[k].push(v);
}
else {
kv[k] = [kv[k], v];
}
}
return kv;
}
export default parse;
//# sourceMappingURL=parse.js.map