diff options
Diffstat (limited to 'lib/parse/page.js')
-rw-r--r-- | lib/parse/page.js | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/parse/page.js b/lib/parse/page.js index 3479c85..4e26455 100644 --- a/lib/parse/page.js +++ b/lib/parse/page.js @@ -36,6 +36,10 @@ function render(section, _options) { return marked.parser(section, options); } +function quizNodesTest(node) { + return node.type === 'table' || node.type === 'list'; +} + function parsePage(src, options) { options = options || {}; @@ -76,6 +80,20 @@ function parsePage(src, options) { context: codeNodes[3] ? codeNodes[3].text : null, } }; + } else if (section.type === 'quiz') { + var nonQuizNodes = _.reject(section, quizNodesTest); + var quizNodes = _.filter(section, quizNodesTest); + var feedback = nonQuizNodes.splice(_.findIndex(nonQuizNodes, { type: 'blockquote_start' }), _.findIndex(nonQuizNodes, { type: 'blockquote_end' })); + return { + id: section.id, + type: section.type, + content: render(nonQuizNodes), + quiz: { + base: render([quizNodes[0]]), + solution: render([quizNodes[1]]), + feedback: render(feedback.slice(1, feedback.length - 1)) + } + }; } // Render normal pages |