| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /**
- * @import {
- * InitialConstruct,
- * Initializer,
- * State,
- * TokenizeContext
- * } from 'micromark-util-types'
- */
- import { blankLine, content } from 'micromark-core-commonmark';
- import { factorySpace } from 'micromark-factory-space';
- import { markdownLineEnding } from 'micromark-util-character';
- /** @type {InitialConstruct} */
- export const flow = {
- tokenize: initializeFlow
- };
- /**
- * @this {TokenizeContext}
- * Self.
- * @type {Initializer}
- * Initializer.
- */
- function initializeFlow(effects) {
- const self = this;
- const initial = effects.attempt(
- // Try to parse a blank line.
- blankLine, atBlankEnding,
- // Try to parse initial flow (essentially, only code).
- effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), "linePrefix")));
- return initial;
- /** @type {State} */
- function atBlankEnding(code) {
- if (code === null) {
- effects.consume(code);
- return;
- }
- effects.enter("lineEndingBlank");
- effects.consume(code);
- effects.exit("lineEndingBlank");
- self.currentConstruct = undefined;
- return initial;
- }
- /** @type {State} */
- function afterConstruct(code) {
- if (code === null) {
- effects.consume(code);
- return;
- }
- effects.enter("lineEnding");
- effects.consume(code);
- effects.exit("lineEnding");
- self.currentConstruct = undefined;
- return initial;
- }
- }
|