mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-17 16:15:22 +00:00
67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
var _ = require('lodash');
|
|
var path = require('path');
|
|
var cheerio = require('cheerio');
|
|
|
|
var links = require('./links');
|
|
|
|
// Adapt an html snippet to be relative to a base folder
|
|
function normalizeHtml(src, options) {
|
|
var $ = cheerio.load(src);
|
|
|
|
$("img").each(function() {
|
|
var src = $(this).attr("src");
|
|
|
|
// Transform as absolute
|
|
if (links.isRelative(src)) {
|
|
src = links.toAbsolute(src, options.base, options.output);
|
|
}
|
|
|
|
$(this).attr("src", src);
|
|
});
|
|
|
|
$("a").each(function() {
|
|
var href = $(this).attr("href");
|
|
|
|
if (links.isRelative(href)) {
|
|
var absolutePath = path.join(options.base, href);
|
|
|
|
// If is in navigation relative: change extsnio nto be .html
|
|
if (options.navigation[absolutePath]) href = links.changeExtension(href, ".html");
|
|
|
|
// Transform as absolute
|
|
href = links.toAbsolute(href, options.base, options.output);
|
|
} else {
|
|
$(this).attr("target", "_blank");
|
|
}
|
|
|
|
// Transform extension
|
|
$(this).attr("href", href);
|
|
});
|
|
|
|
return $.html();
|
|
};
|
|
|
|
// Adapt page content to be relative to a base folder
|
|
function normalizePage(sections, options) {
|
|
options = _.defaults(options || {}, {
|
|
// Navigation to use to transform path
|
|
navigation: {},
|
|
|
|
// Directory parent of the file currently in rendering process
|
|
base: "./",
|
|
|
|
// Directory parent from the html output
|
|
output: "./"
|
|
});
|
|
|
|
return _.map(sections, function(section) {
|
|
if (section.type != "normal") return section;
|
|
section.content = normalizeHtml(section.content, options);
|
|
return section;
|
|
});
|
|
};
|
|
|
|
module.exports = {
|
|
normalize: normalizePage
|
|
};
|