summaryrefslogtreecommitdiffstats
path: root/lib/output/modifiers/resolveLinks.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/output/modifiers/resolveLinks.js')
-rw-r--r--lib/output/modifiers/resolveLinks.js31
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;