Files
gitbook/lib/parse/glossary.js
T

42 lines
912 B
JavaScript

var _ = require('lodash');
var kramed = require('kramed');
// Get all the pairs of header + paragraph in a list of nodes
function groups(nodes) {
// A list of next nodes
var next = nodes.slice(1).concat(null);
return _.reduce(nodes, function(accu, node, idx) {
// Skip
if(!(
node.type === 'heading' &&
(next[idx] && next[idx].type === 'paragraph')
)) {
return accu;
}
// Add group
accu.push([
node,
next[idx]
]);
return accu;
}, []);
}
function parseGlossary(src) {
var nodes = kramed.lexer(src);
return groups(nodes)
.map(function(pair) {
// Simplify each group to a simple object with name/description
return {
name: pair[0].text,
description: pair[1].text,
};
});
}
module.exports = parseGlossary;