willow-utils
Version:
工具库
156 lines (114 loc) • 6.38 kB
JavaScript
;
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