mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-18 00:25:07 +00:00
Fix #197: use URI.js for calculation of relative url
Use bower for client dependencies
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
define([
|
||||
"jQuery",
|
||||
"utils/path",
|
||||
"utils/url",
|
||||
"core/events",
|
||||
"core/state",
|
||||
"core/search",
|
||||
@@ -8,15 +8,15 @@ define([
|
||||
"core/exercise",
|
||||
"core/quiz",
|
||||
"core/loading"
|
||||
], function($, path, events, state, search, progress, exercises, quiz, loading) {
|
||||
], function($, URL, events, state, search, progress, exercises, quiz, loading) {
|
||||
var prev, next;
|
||||
var githubCountStars, githubCountWatch;
|
||||
|
||||
var usePushState = (typeof history.pushState !== "undefined");
|
||||
|
||||
var handleNavigation = function(relativeUrl, push) {
|
||||
var url = path.isAbsolute(relativeUrl) ? relativeUrl : path.join(path.dirname(window.location.pathname), relativeUrl);
|
||||
console.log("navigate to ", url, "baseurl="+relativeUrl);
|
||||
var url = URL.join(window.location.pathname, relativeUrl);
|
||||
console.log("navigate to ", url, "baseurl="+relativeUrl, "current="+window.location.pathname);
|
||||
|
||||
if (!usePushState) {
|
||||
// Refresh the page to the new URL if pushState not supported
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
define([], function() {
|
||||
// Joins path segments. Preserves initial "/" and resolves ".." and "."
|
||||
// Does not support using ".." to go above/outside the root.
|
||||
// This means that join("foo", "../../bar") will not resolve to "../bar"
|
||||
function join(/* path segments */) {
|
||||
// Split the inputs into a list of path commands.
|
||||
var parts = [];
|
||||
for (var i = 0, l = arguments.length; i < l; i++) {
|
||||
parts = parts.concat(arguments[i].split("/"));
|
||||
}
|
||||
// Interpret the path commands to get the new resolved path.
|
||||
var newParts = [];
|
||||
for (i = 0, l = parts.length; i < l; i++) {
|
||||
var part = parts[i];
|
||||
// Remove leading and trailing slashes
|
||||
// Also remove "." segments
|
||||
if (!part || part === ".") continue;
|
||||
// Interpret ".." to pop the last segment
|
||||
if (part === "..") newParts.pop();
|
||||
// Push new path segments.
|
||||
else newParts.push(part);
|
||||
}
|
||||
// Preserve the initial slash if there was one.
|
||||
if (parts[0] === "") newParts.unshift("");
|
||||
// Turn back into a single string path.
|
||||
return newParts.join("/") || (newParts.length ? "/" : ".");
|
||||
}
|
||||
|
||||
// A simple function to get the dirname of a path
|
||||
// Trailing slashes are ignored. Leading slash is preserved.
|
||||
function dirname(path) {
|
||||
return join(path, "..");
|
||||
}
|
||||
|
||||
// test if a path or url is absolute
|
||||
function isAbsolute(path) {
|
||||
if (!path) return false;
|
||||
|
||||
return (path[0] == "/" || path.indexOf("http://") == 0 || path.indexOf("https://") == 0);
|
||||
}
|
||||
|
||||
return {
|
||||
dirname: dirname,
|
||||
join: join,
|
||||
isAbsolute: isAbsolute
|
||||
};
|
||||
})
|
||||
@@ -0,0 +1,33 @@
|
||||
define([
|
||||
"vendors/URIjs/src/URI"
|
||||
], function(URI) {
|
||||
// Joins path segments. Preserves initial "/" and resolves ".." and "."
|
||||
// Does not support using ".." to go above/outside the root.
|
||||
// This means that join("foo", "../../bar") will not resolve to "../bar"
|
||||
function join(baseUrl, url) {
|
||||
var theUrl = new URI(url);
|
||||
if (theUrl.is("relative")) {
|
||||
theUrl = theUrl.absoluteTo(baseUrl);
|
||||
}
|
||||
return theUrl.toString();
|
||||
}
|
||||
|
||||
// A simple function to get the dirname of a path
|
||||
// Trailing slashes are ignored. Leading slash is preserved.
|
||||
function dirname(path) {
|
||||
return join(path, "..");
|
||||
}
|
||||
|
||||
// test if a path or url is absolute
|
||||
function isAbsolute(path) {
|
||||
if (!path) return false;
|
||||
|
||||
return (path[0] == "/" || path.indexOf("http://") == 0 || path.indexOf("https://") == 0);
|
||||
}
|
||||
|
||||
return {
|
||||
dirname: dirname,
|
||||
join: join,
|
||||
isAbsolute: isAbsolute
|
||||
};
|
||||
})
|
||||
Reference in New Issue
Block a user