summaryrefslogtreecommitdiffstats
path: root/lib/utils/page.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/utils/page.js')
-rw-r--r--lib/utils/page.js30
1 files changed, 19 insertions, 11 deletions
diff --git a/lib/utils/page.js b/lib/utils/page.js
index 6a6ee9c..8de0b24 100644
--- a/lib/utils/page.js
+++ b/lib/utils/page.js
@@ -73,8 +73,9 @@ function normalizeHtml(src, options) {
$("img").each(function() {
var src = $(this).attr("src");
+ var isExternal = links.isExternal(src);
- // Transform as absolute
+ // Transform as relative to the bases
if (links.isRelative(src)) {
src = links.toAbsolute(src, options.base, options.output);
}
@@ -82,19 +83,24 @@ function normalizeHtml(src, options) {
// Convert if needed
if (options.convertImages) {
var ext = path.extname(src);
+
+ // Test image extension
if (_.contains(imgUtils.INVALID, ext)) {
- if (imgConversionCache[outputRoot][src]) {
+ var srcAbs = isExternal? src : path.join("/", options.base, src);
+
+ if (imgConversionCache[outputRoot][srcAbs]) {
// Already converted
- src = imgConversionCache[outputRoot][src];
+ src = imgConversionCache[outputRoot][srcAbs];
} else {
// Not converted yet
var dest = "";
- if (links.isExternal(src)) {
+ // Replace extension
+ if (isExternal) {
dest = path.basename(src, ext)+".png";
} else {
- // Replace extension
- var dest = path.join(path.dirname(src), path.basename(src, ext)+".png");
+ dest = path.join(path.dirname(srcAbs), path.basename(srcAbs, ext)+".png");
+ dest = dest[0] == "/"? dest.slice(1) : dest;
}
// Absolute with input
@@ -106,18 +112,20 @@ function normalizeHtml(src, options) {
// Reset as relative to book
dest = path.relative(outputRoot, dest);
- options.book.log.debug.ln("detect invalid image (will be converted to png):", src);
+ options.book.log.debug.ln("detect invalid image (will be converted to png):", srcAbs);
// Add to cache
- imgConversionCache[outputRoot][src] = dest;
+ imgConversionCache[outputRoot][srcAbs] = "/"+dest;
// Push to convert
toConvert.push({
- source: src,
- dest: dest
+ source: isExternal? srcAbs : path.join("./", srcAbs),
+ dest: path.join("./", dest)
});
- src = dest;
}
+
+ // Reset as relative to output
+ src = links.toAbsolute(src, options.base, options.output);
}
}