diff options
Diffstat (limited to 'lib/output/modifiers/resolveLinks.js')
-rw-r--r-- | lib/output/modifiers/resolveLinks.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/output/modifiers/resolveLinks.js b/lib/output/modifiers/resolveLinks.js new file mode 100644 index 0000000..bf3fd10 --- /dev/null +++ b/lib/output/modifiers/resolveLinks.js @@ -0,0 +1,38 @@ +var path = require('path'); + +var LocationUtils = require('../../utils/location'); +var editHTMLElement = require('./editHTMLElement'); + +/** + Resolve all HTML links: + - /test.md in hello -> ../test.html + + @param {String} currentFile + @param {Function(String) -> String} resolveFile + @param {HTMLDom} $ +*/ +function resolveLinks(currentFile, resolveFile, $) { + var currentDirectory = path.dirname(currentFile); + + return editHTMLElement($, 'a', function($a) { + var href = $a.attr('href'); + + if (LocationUtils.isExternal(href)) { + $a.attr('_target', 'blank'); + return; + } + + // Calcul absolute path for this + href = LocationUtils.toAbsolute(href, currentDirectory, '.'); + + // Resolve file + href = resolveFile(href); + + // Convert back to relative + href = LocationUtils.relative(currentDirectory, href); + + $a.attr('href', href); + }); +} + +module.exports = resolveLinks; |