diff options
Diffstat (limited to 'lib/utils/page.js')
-rw-r--r-- | lib/utils/page.js | 30 |
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); } } |