UNPKG

course-renderer

Version:

Manages CA School Courses file system storage and HTML conversion

50 lines (35 loc) 1.39 kB
import Token from '../Token' import Reader from '../reader' import * as rules from '../rules' import { series, question, repl, text, HandlerOptionInterface } from '../handlers' const SECTION_MARKER = 0x2B /* + */ export function section(reader: Reader, tokens: Token[], silent: boolean = false, options: HandlerOptionInterface): boolean { let pos = reader.getCurrentLineStartPos() if (reader.getCharCode(pos++) !== SECTION_MARKER || reader.getCharCode(pos++) !== SECTION_MARKER || reader.getCharCode(pos++) !== SECTION_MARKER ) { return false } if (silent) return true if (options.sectionMode) { options.sectionMode = false reader.nextNonEmptyLines() return true } else { reader.nextNonEmptyLines() options.sectionMode = true const start = reader.currentLine while(!reader.isEnd()) { if (question(reader, tokens, true, options) || series(reader, tokens, true, options)) break reader.nextLine() } reader.currentLine-- const label = reader.getLines(start, reader.currentLine) const token = new Token('SECTION') token.setContent(label) token.setChapter(options.chapter) tokens.push(token) reader.nextNonEmptyLines() return true } }