reduxen
Version:
Redux-first router
64 lines (50 loc) • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _parseQuery = require("./parseQuery.js");
var _parseQuery2 = _interopRequireDefault(_parseQuery);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var parseUrl = function parseUrl(url) {
var indexOfQuery = url.indexOf("?");
var indexOfHash = url.indexOf("#");
var pathPart = null;
var queryPart = null;
var hashPart = null;
if (indexOfQuery !== -1) {
pathPart = url.slice(0, indexOfQuery);
queryPart = url.slice(indexOfQuery + 1);
if (indexOfHash !== -1 && indexOfQuery < indexOfHash) {
var indexOfHashInQuery = queryPart.indexOf("#");
hashPart = queryPart.slice(indexOfHashInQuery + 1);
queryPart = queryPart.slice(0, indexOfHashInQuery);
}
} else {
if (indexOfHash !== -1) {
pathPart = url.slice(0, indexOfHash);
hashPart = url.slice(indexOfHash + 1);
} else {
pathPart = url;
}
}
var urlObject = {};
if (pathPart) {
if (pathPart === "/") {
urlObject.path = "/";
} else {
if (pathPart.slice(-1) === "/") {
urlObject.path = pathPart.slice(0, -1);
} else {
urlObject.path = pathPart;
}
}
}
if (queryPart !== null) {
urlObject.query = (0, _parseQuery2.default)(queryPart);
}
if (hashPart !== null) {
urlObject.hash = hashPart;
}
return urlObject;
};
exports.default = parseUrl;