UNPKG

willow-utils

Version:

工具库

156 lines (114 loc) 6.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFromSearch = getFromSearch; exports.getFromSearchIgnoreCase = getFromSearchIgnoreCase; exports.obj2search = obj2search; exports.removeFromSearch = removeFromSearch; exports.removeFromSearchIgnoreCase = removeFromSearchIgnoreCase; exports.search2obj = search2obj; exports.set2search = set2search; var _commonUtil = require("./commonUtil"); var _global = _interopRequireDefault(require("global")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // 修改 url 的参数, 在浏览器中, 不将search值作为参数传入时, 会直接修改浏览器的search值 function set2search(key, val, locationSearch) { var _global$location; var reg = new RegExp("(^[?]?|&)(".concat((0, _commonUtil.encodeRegExp)(key), ")=([^&]*)(&|$)")); var search = locationSearch || ((_global$location = _global.default.location) === null || _global$location === void 0 ? void 0 : _global$location.search) || ''; if (reg.test(search)) { search = search.replace(reg, "$1$2=".concat(encodeURIComponent(val), "$4")); } else { search = "".concat(search ? "".concat(search, "&") : '?').concat(key, "=").concat(encodeURIComponent(val)); } search = search.replace(/^[?]*/, '?'); if ((0, _commonUtil.inBrowser)() && !locationSearch) history.replaceState(history.state, '', search); return search; } // 从 search 中获取参数 function getFromSearch(key, search) { var _global$location2; search = search || ((_global$location2 = _global.default.location) === null || _global$location2 === void 0 ? void 0 : _global$location2.search) || ''; var reg = new RegExp("(^[?]?|&)".concat((0, _commonUtil.encodeRegExp)(key), "=([^&]*)(&|$)")); var result = search.match(reg); if (result != null) { try { return decodeURIComponent(result[2] || ''); } catch (e) { console.error(e); return result[2] || ''; } } return ''; } // 从 search 中清除某个参数 function removeFromSearch(key, locationSearch) { var _global$location3; var reg = new RegExp("(^[?]?|&)(".concat((0, _commonUtil.encodeRegExp)(key), ")=([^&]*)(?=&|$)"), 'g'); var search = locationSearch || ((_global$location3 = _global.default.location) === null || _global$location3 === void 0 ? void 0 : _global$location3.search) || ''; if (!reg.test(search)) return search; search = search.replace(reg, '$1'); // 移除重复的 & 符 search = search.replace(/(^[?]?|&)&+/g, '$1'); // 移除末尾的 & 符 search = search.replace(/&+$/g, ''); if ((0, _commonUtil.inBrowser)() && !locationSearch) history.replaceState(history.state, '', search); return search; } // 从 search 中获取参数, 忽视参数大小写 function getFromSearchIgnoreCase(key, search) { var _global$location4; search = search || ((_global$location4 = _global.default.location) === null || _global$location4 === void 0 ? void 0 : _global$location4.search) || ''; var reg = new RegExp("(^[?]?|&)".concat((0, _commonUtil.encodeRegExp)(key), "=([^&]*)(&|$)"), 'i'); var result = search.match(reg); if (result != null) { try { return decodeURIComponent(result[2] || ''); } catch (e) { console.error(e); return result[2] || ''; } } return ''; } // 从 search 中清除某个参数, 忽视参数大小写 function removeFromSearchIgnoreCase(key, locationSearch) { var _global$location5; var reg = new RegExp("(^[?]?|&)(".concat((0, _commonUtil.encodeRegExp)(key), ")=([^&]*)(?=&|$)"), 'ig'); var search = locationSearch || ((_global$location5 = _global.default.location) === null || _global$location5 === void 0 ? void 0 : _global$location5.search) || ''; if (!reg.test(search)) return search; search = search.replace(reg, '$1'); // 移除重复的 & 符 search = search.replace(/(^[?]?|&)&+/g, '$1'); // 移除末尾的 & 符 search = search.replace(/&+$/g, ''); if ((0, _commonUtil.inBrowser)() && !locationSearch) history.replaceState(history.state, '', search); return search; } // object 转 URL search 参数, 不包含首位的 ? 符, 属性值会进行 encode function obj2search() { var param = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Object.keys(param).reduce(function (str, key) { str += (str ? '&' : '') + "".concat(key, "=").concat(encodeURIComponent(param[key])); return str; }, ''); } // 从URL中获取获取所有参数 function search2obj(locationSearch) { var _global$location6; var search = locationSearch || ((_global$location6 = _global.default.location) === null || _global$location6 === void 0 ? void 0 : _global$location6.search) || ''; if (!search) return {}; return search.split(/[?&]/).reduce(function (result, kv) { if (kv) { var _kv$split = kv.split('='), _kv$split2 = _toArray(_kv$split), k = _kv$split2[0], v = _kv$split2.slice(1); try { result[k] = decodeURIComponent(v.join('=')); } catch (e) { console.error(e); result[k] = v.join('='); } } return result; }, {}); } //# sourceMappingURL=maps/urlUtil.js.map