mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-16 23:55:20 +00:00
Add glossary parser
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
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);
|
||||
|
||||
var entries = groups(nodes);
|
||||
|
||||
return entries;
|
||||
}
|
||||
|
||||
module.exports = parseGlossary;
|
||||
@@ -1,5 +1,6 @@
|
||||
module.exports = {
|
||||
summary: require('./summary'),
|
||||
glossary: require('./glossary'),
|
||||
langs: require('./langs'),
|
||||
page: require('./page'),
|
||||
lex: require('./lex'),
|
||||
|
||||
Reference in New Issue
Block a user