UNPKG

course-renderer

Version:

Manages CA School Courses file system storage and HTML conversion

62 lines (61 loc) 2.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Token_1 = require("../Token"); const rules = require("../rules"); const handlers_1 = require("../handlers"); function repl(reader, tokens, silent = false, options) { if (!rules.annotation(reader, true)) return false; const parsedAnnotation = rules.annotation(reader, false); if (parsedAnnotation.type !== 'REPL') { reader.currentLine--; // Revert the reader line pointer since this handler will not handle it. return false; } if (silent) return true; reader.nextNonEmptyLines(); if (!rules.fence(reader, tokens, true, options)) throw new Error(`REPL type expects a fence markup at line ${reader.currentLine + 1}`); const token = new Token_1.default(parsedAnnotation.type); token.setChapter(options.chapter); token.setReadonly(parsedAnnotation.readonly === 'true' ? true : false); if (parsedAnnotation.caption && parsedAnnotation.caption.length > 0) { token.setCaption(parsedAnnotation.caption); } if (parsedAnnotation.init != null) { token.setInitialization(parsedAnnotation.init); } if (parsedAnnotation.files != null) { const files = parsedAnnotation.files.split(/,\s*/); files.forEach((file) => { token.addFile(file); }); } if (options.sectionMode && options.replMode) { const sectionTokChildren = tokens[tokens.length - 1].children; const replTok = sectionTokChildren[sectionTokChildren.length - 1]; replTok.addChild(token); } else if (options.sectionMode || options.replMode) { tokens[tokens.length - 1].addChild(token); } else { tokens.push(token); } rules.fence(reader, tokens, false, options); // Let us check if there is another fence block after this. while (true) { reader.nextNonEmptyLines(); if (rules.fence(reader, tokens, true, options)) { rules.fence(reader, tokens, false, options); continue; } break; } options.replMode = true; //reader.nextNonEmptyLines() handlers_1.question(reader, tokens, false, options); options.replMode = false; return true; } exports.repl = repl;