summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/constants/defaultBlocks.js2
-rw-r--r--lib/output/getModifiers.js26
-rw-r--r--lib/output/json/onPage.js6
-rw-r--r--lib/output/modifiers/__tests__/resolveLinks.js11
-rw-r--r--lib/output/resolveFile.js21
5 files changed, 61 insertions, 5 deletions
diff --git a/lib/constants/defaultBlocks.js b/lib/constants/defaultBlocks.js
index 5d91359..ed19115 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 0000000..96784fe
--- /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 <Array>
+*/
+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 1143aaa..8216bb9 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 0000000..36511a2
--- /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 0000000..a3a49c5
--- /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;