123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /**
- * @typedef {import('micromark-util-types').Construct} Construct
- * @typedef {import('micromark-util-types').State} State
- * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext
- * @typedef {import('micromark-util-types').Tokenizer} Tokenizer
- */
- import {factorySpace} from 'micromark-factory-space'
- import {markdownLineEnding, markdownSpace} from 'micromark-util-character'
- /** @type {Construct} */
- export const blankLine = {
- tokenize: tokenizeBlankLine,
- partial: true
- }
- /**
- * @this {TokenizeContext}
- * @type {Tokenizer}
- */
- function tokenizeBlankLine(effects, ok, nok) {
- return start
- /**
- * Start of blank line.
- *
- * > 👉 **Note**: `␠` represents a space character.
- *
- * ```markdown
- * > | ␠␠␊
- * ^
- * > | ␊
- * ^
- * ```
- *
- * @type {State}
- */
- function start(code) {
- return markdownSpace(code)
- ? factorySpace(effects, after, 'linePrefix')(code)
- : after(code)
- }
- /**
- * At eof/eol, after optional whitespace.
- *
- * > 👉 **Note**: `␠` represents a space character.
- *
- * ```markdown
- * > | ␠␠␊
- * ^
- * > | ␊
- * ^
- * ```
- *
- * @type {State}
- */
- function after(code) {
- return code === null || markdownLineEnding(code) ? ok(code) : nok(code)
- }
- }
|