summaryrefslogtreecommitdiffstats
path: root/lib/parse/page.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/parse/page.js')
-rw-r--r--lib/parse/page.js18
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