diff options
author | Samy Pesse <samypesse@gmail.com> | 2016-04-23 23:58:08 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2016-04-23 23:58:08 +0200 |
commit | 927185d95c9875a9b74d176b93669ebdbceecd14 (patch) | |
tree | 94c0b9ef45af8d86c8250ed8c86ad2810ac49d79 /lib/output/modifiers/resolveLinks.js | |
parent | a3df6c6f0c1068762f9d48cdff97ab5d4c583082 (diff) | |
download | gitbook-927185d95c9875a9b74d176b93669ebdbceecd14.zip gitbook-927185d95c9875a9b74d176b93669ebdbceecd14.tar.gz gitbook-927185d95c9875a9b74d176b93669ebdbceecd14.tar.bz2 |
add test for modifier "annotateText"
Diffstat (limited to 'lib/output/modifiers/resolveLinks.js')
-rw-r--r-- | lib/output/modifiers/resolveLinks.js | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/lib/output/modifiers/resolveLinks.js b/lib/output/modifiers/resolveLinks.js index 5c2514f..b5ad4f3 100644 --- a/lib/output/modifiers/resolveLinks.js +++ b/lib/output/modifiers/resolveLinks.js @@ -1,13 +1,38 @@ +var path = require('path'); +var LocationUtils = require('../../utils/location'); +var editHTMLElement = require('./editHTMLElement'); /** - Resolve all HTML links + Resolve all HTML links: + - /test.md in hello -> ../test.html - @param {String} + @param {String} currentFile + @param {Function(String) -> String} resolveFile @param {HTMLDom} $ */ -function resolveLinks() { +function resolveLinks(currentFile, resolveFile, $) { + var currentDirectory = path.dirname(currentFile); + return editHTMLElement($, 'a', function($a) { + var href = $a.attr('href'); + + if (location.isExternal(href)) { + $a.attr('_target', 'blank'); + return; + } + + // Calcul absolute path for this + href = LocationUtils.toAbsolute(href, currentDirectory, currentDirectory); + + // Resolve file + href = resolveFile(href); + + // Convert back to relative + href = LocationUtils.relative(currentDirectory, href); + + $a.attr('href', href); + }); } module.exports = resolveLinks; |