course-renderer
Version:
Manages CA School Courses file system storage and HTML conversion
62 lines (61 loc) • 2.29 kB
JavaScript
;
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;