const urlQuery = {
  _makeUrl: function(url, search) {
    return url.indexOf("?") !== -1
      ? url.replace(/\?([^#]*)/, "" + (search ? "?" + search : ""))
      : "" + url + (search ? "?" + search : "");
  },
  _getQueryFromUrl: function(url) {
    if (!url || url.indexOf("?") === -1) {
      return "";
    }

    var search = url.split("?")[1];

    if (!search || search.indexOf("=") === -1) {
      throw new Error("not query format!");
    }

    return search;
  },
  queryOne: function(key) {
    var str =
      arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";

    var s = str ? "?" + this._getQueryFromUrl(str) : location.search;
    var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)"); // 构造一个含有目标参数的正则表达式对象
    var r = s.substr(1).match(reg); // 匹配目标参数
    if (r != null) {
      return decodeURIComponent(r[2]).replace(/(#\w+)$/, "");
    }
    return null; // 返回参数值
  },
  queryAll: function() {
    var str =
      arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";

    var reg = new RegExp("(^|&)([^&=]+)=([^&]*)(&|$)");
    var s = str ? "?" + this._getQueryFromUrl(str) : location.search;
    var search = s.substr(1);
    var a = search.split("&");
    var i = 0;
    var result = {};

    while (a[i]) {
      var r = a[i].match(reg);
      if (r != null) {
        result[decodeURIComponent(r[2])] = decodeURIComponent(r[3]);
      }
      i++;
    }
    return result;
  },
  queryRouterLastOne: function() {
    let str = this.pathname().split("/");
    let router = str[str.length - 1].split("?")[0];
    return router === "" ? str[str.length - 2] : router;
  },
  pathname: function() {
    return location.hash ? location.hash : location.pathname;
  },
  search: function() {
    return location.hash ? location.hash : location.search;
  }
};

export default urlQuery;
