From 323facbdc8beea33179c7167e4ab4e8d7fe3eb98 Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Mon, 11 Aug 2014 18:57:39 -0700 Subject: [PATCH] Add glossary parser --- lib/parse/glossary.js | 36 ++++++++++++++++++++++++++++++++++++ lib/parse/index.js | 1 + 2 files changed, 37 insertions(+) create mode 100644 lib/parse/glossary.js diff --git a/lib/parse/glossary.js b/lib/parse/glossary.js new file mode 100644 index 000000000..65473cf03 --- /dev/null +++ b/lib/parse/glossary.js @@ -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; diff --git a/lib/parse/index.js b/lib/parse/index.js index 0ebb03a7a..c8c15e63b 100644 --- a/lib/parse/index.js +++ b/lib/parse/index.js @@ -1,5 +1,6 @@ module.exports = { summary: require('./summary'), + glossary: require('./glossary'), langs: require('./langs'), page: require('./page'), lex: require('./lex'),