UNPKG

micromark

Version:

small commonmark compliant markdown parser with positional info and concrete tokens

57 lines (49 loc) 1.29 kB
import spaceFactory from '../tokenize/factory-space.mjs' import partialBlankLine from '../tokenize/partial-blank-line.mjs' import content from '../tokenize/content.mjs' var tokenize = initializeFlow function initializeFlow(effects) { var self = this var initial = effects.attempt( // Try to parse a blank line. partialBlankLine, atBlankEnding, // Try to parse initial flow (essentially, only code). effects.attempt( this.parser.constructs.flowInitial, afterConstruct, spaceFactory( effects, effects.attempt( this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct) ), 'linePrefix' ) ) ) return initial function atBlankEnding(code) { if (code === null) { effects.consume(code) return } effects.enter('lineEndingBlank') effects.consume(code) effects.exit('lineEndingBlank') self.currentConstruct = undefined return initial } function afterConstruct(code) { if (code === null) { effects.consume(code) return } effects.enter('lineEnding') effects.consume(code) effects.exit('lineEnding') self.currentConstruct = undefined return initial } } export {tokenize}