summaryrefslogtreecommitdiffstats
path: root/lib/parse/navigation.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/parse/navigation.js')
-rw-r--r--lib/parse/navigation.js64
1 files changed, 0 insertions, 64 deletions
diff --git a/lib/parse/navigation.js b/lib/parse/navigation.js
deleted file mode 100644
index ae4eb9d..0000000
--- a/lib/parse/navigation.js
+++ /dev/null
@@ -1,64 +0,0 @@
-var _ = require('lodash');
-
-// Cleans up an article/chapter object
-// remove 'articles' attributes
-function clean(obj) {
- return obj && _.omit(obj, ['articles']);
-}
-
-function flattenChapters(chapters) {
- return _.reduce(chapters, function(accu, chapter) {
- return accu.concat([clean(chapter)].concat(flattenChapters(chapter.articles)));
- }, []);
-}
-
-// Returns from a summary a map of
-/*
- {
- "file/path.md": {
- prev: ...,
- next: ...,
- },
- ...
- }
-*/
-function navigation(summary, files) {
- // Support single files as well as list
- files = _.isArray(files) ? files : (_.isString(files) ? [files] : null);
-
- // List of all navNodes
- // Flatten chapters, then add in default README node if ndeeded etc ...
- var navNodes = flattenChapters(summary.chapters);
- var prevNodes = [null].concat(navNodes.slice(0, -1));
- var nextNodes = navNodes.slice(1).concat([null]);
-
- // Mapping of prev/next for a give path
- var mapping = _.chain(_.zip(navNodes, prevNodes, nextNodes))
- .map(function(nodes) {
- var current = nodes[0], prev = nodes[1], next = nodes[2];
-
- // Skip if no path
- if(!current.path) return null;
-
- return [current.path, {
- title: current.title,
- prev: prev,
- next: next,
- level: current.level,
- }];
- })
- .filter()
- .object()
- .value();
-
- // Filter for only files we want
- if(files) {
- return _.pick(mapping, files);
- }
-
- return mapping;
-}
-
-
-// Exports
-module.exports = navigation;