diff --git a/lib/constants/defaultBlocks.js b/lib/constants/defaultBlocks.js index 5d9135950..ed1911565 100644 --- a/lib/constants/defaultBlocks.js +++ b/lib/constants/defaultBlocks.js @@ -47,5 +47,5 @@ module.exports = Immutable.List([ return { body: out }; }); } - }), + }) ]); diff --git a/lib/output/getModifiers.js b/lib/output/getModifiers.js new file mode 100644 index 000000000..96784feab --- /dev/null +++ b/lib/output/getModifiers.js @@ -0,0 +1,26 @@ +var Modifier = require('../modifier'); +var resolveFile = require('./resolveFile'); + +/** + Return default modifier to prepare a page + + @return +*/ +function getModifiers(output, page) { + var book = output.getBook(); + var glossary = book.getGlossary(); + var entries = glossary.getEntries(); + + var file = page.getFile(); + + return [ + Modifier.addHeadingId, + Modifier.resolveLinks.bind(null, + file.getPath(), + resolveFile.bind(null, output) + ), + Modifier.annotateText(entries) + ]; +} + +module.exports = getModifiers; diff --git a/lib/output/json/onPage.js b/lib/output/json/onPage.js index 1143aaae8..8216bb90d 100644 --- a/lib/output/json/onPage.js +++ b/lib/output/json/onPage.js @@ -1,6 +1,7 @@ var JSONUtils = require('../../json'); var Modifier = require('../modifier'); var Writer = require('../writer'); +var getModifiers = require('../getModifiers'); /** Write a page as a json file @@ -9,10 +10,7 @@ var Writer = require('../writer'); @param {Page} page */ function onPage(output, page) { - return Modifier.modifyHTML(page, [ - Modifier.addHeadingId, - Modifier.resolveLinks - ]) + return Modifier.modifyHTML(page, getModifiers(output, page)) .then(function(resultPage) { // Generate the JSON var json = JSONUtils.encodeBookWithPage(output.getBook(), resultPage); diff --git a/lib/output/modifiers/__tests__/resolveLinks.js b/lib/output/modifiers/__tests__/resolveLinks.js new file mode 100644 index 000000000..36511a216 --- /dev/null +++ b/lib/output/modifiers/__tests__/resolveLinks.js @@ -0,0 +1,11 @@ +jest.autoMockOff(); + +var cheerio = require('cheerio'); + +describe('resolveLinks', function() { + var resolveLinks = require('../resolveLinks'); + + +}); + + diff --git a/lib/output/resolveFile.js b/lib/output/resolveFile.js new file mode 100644 index 000000000..a3a49c54a --- /dev/null +++ b/lib/output/resolveFile.js @@ -0,0 +1,21 @@ +var PathUtils = require('../utils/path'); + +/** + Resolve an absolute path (extracted from a link) + + @param {Output} output + @param {String} filePath + @return {String} +*/ +function resolveFile(output, filePath) { + var pages = output.getPages(); + var page = pages.get(filePath); + + if (!page) { + return filePath; + } + + return PathUtils.setExtension(filePath, '.html'); +} + +module.exports = resolveFile;