summaryrefslogtreecommitdiffstats
path: root/lib/page.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/page.js')
-rw-r--r--lib/page.js62
1 files changed, 0 insertions, 62 deletions
diff --git a/lib/page.js b/lib/page.js
deleted file mode 100644
index 047f3e4..0000000
--- a/lib/page.js
+++ /dev/null
@@ -1,62 +0,0 @@
-var _ = require('lodash');
-var marked = require('marked');
-
-
-// Split a page up into sections (lesson, exercises, ...)
-function splitSections(nodes) {
- var section = [];
-
- return _.reduce(nodes, function(sections, el) {
- if(el.type === 'hr') {
- sections.push(section);
- section = [];
- } else {
- section.push(el);
- }
-
- return sections;
- }, []).concat([section]); // Add remaining nodes
-}
-
-// What is the type of this section
-function sectionType(nodes) {
- if(_.filter(nodes, {
- type: 'code'
- }).length === 3) {
- return 'exercise';
- }
-
- return 'normal';
-}
-
-function parsePage(src) {
- var nodes = marked.lexer(src);
-
- return _.chain(splitSections(nodes))
- .map(function(section) {
- // Detect section type
- section.type = sectionType(section);
- return section;
- })
- .map(function(section, idx) {
- // Transform given type
- if(section.type === 'exercise' && (idx % 2) == 1) {
- return {
- type: section.type,
- };
- }
-
- // marked's Render expects this, we don't use it yet
- section.links = {};
-
- // Render normal pages
- return {
- type: section.type,
- content: marked.parser(section)
- };
- })
- .value();
-}
-
-// Exports
-module.exports = parsePage;