mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-10-03 20:20:35 +00:00
Fix absolute path calcul
Add tests for links module
This commit is contained in:
+9
-7
@@ -26,15 +26,17 @@ var isRelative = function(href) {
|
||||
// outdir: directory parent from the html output
|
||||
|
||||
var toAbsolute = function(_href, dir, outdir) {
|
||||
// Absolute file in source
|
||||
_href = path.join(dir, _href);
|
||||
if (isExternal(_href)) return _href;
|
||||
|
||||
// make it relative to output
|
||||
_href = path.relative(outdir, _href);
|
||||
// Path '_href' inside the base folder
|
||||
var hrefInRoot = path.normalize(path.join(dir, _href));
|
||||
if (_href[0] == "/") hrefInRoot = path.normalize(_href.slice(1));
|
||||
|
||||
if (process.platform === 'win32') {
|
||||
_href = _href.replace(/\\/g, '/');
|
||||
}
|
||||
// Make it relative to output
|
||||
_href = path.relative(outdir, hrefInRoot);
|
||||
|
||||
// Normalize windows paths
|
||||
_href = _href.replace(/\\/g, '/');
|
||||
|
||||
return _href;
|
||||
};
|
||||
|
||||
+2
-2
@@ -168,7 +168,7 @@ function normalizeHtml(src, options) {
|
||||
|
||||
// Convert svg images to png
|
||||
function convertImages(images, options) {
|
||||
options.book.log.info("convert ", images.length, "images to png");
|
||||
options.book.log.info.ln("convert ", images.length, "images to png");
|
||||
|
||||
return _.reduce(images, function(prev, image) {
|
||||
return prev.then(function() {
|
||||
@@ -187,7 +187,7 @@ function convertImages(images, options) {
|
||||
});
|
||||
}, Q())
|
||||
.then(function() {
|
||||
options.book.log.info.ok();
|
||||
options.book.log.info.ok(images.length+" images converted with success");
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
var path = require('path');
|
||||
var _ = require('lodash');
|
||||
var assert = require('assert');
|
||||
|
||||
var links = require("../lib/utils/links");
|
||||
|
||||
describe('Links', function () {
|
||||
it('should correctly test external links', function() {
|
||||
assert(links.isExternal("http://google.fr"));
|
||||
assert(links.isExternal("https://google.fr"));
|
||||
assert(!links.isExternal("test.md"));
|
||||
assert(!links.isExternal("folder/test.md"));
|
||||
assert(!links.isExternal("/folder/test.md"));
|
||||
});
|
||||
|
||||
describe('toAbsolute', function() {
|
||||
it('should correctly transform as absolute', function() {
|
||||
assert.equal(links.toAbsolute("http://google.fr"), "http://google.fr");
|
||||
assert.equal(links.toAbsolute("test.md", "./", "./"), "test.md");
|
||||
assert.equal(links.toAbsolute("folder/test.md", "./", "./"), "folder/test.md");
|
||||
});
|
||||
|
||||
it('should correctly handle windows path', function() {
|
||||
assert.equal(links.toAbsolute("folder\\test.md", "./", "./"), "folder/test.md");
|
||||
});
|
||||
|
||||
it('should correctly handle absolute path', function() {
|
||||
assert.equal(links.toAbsolute("/test.md", "./", "./"), "test.md");
|
||||
assert.equal(links.toAbsolute("/test.md", "test", "test"), "../test.md");
|
||||
assert.equal(links.toAbsolute("/sub/test.md", "test", "test"), "../sub/test.md");
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user