1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /**
- * @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'
- import {codes, types} from 'micromark-util-symbol'
- /** @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, types.linePrefix)(code)
- : after(code)
- }
- /**
- * At eof/eol, after optional whitespace.
- *
- * > 👉 **Note**: `␠` represents a space character.
- *
- * ```markdown
- * > | ␠␠␊
- * ^
- * > | ␊
- * ^
- * ```
- *
- * @type {State}
- */
- function after(code) {
- return code === codes.eof || markdownLineEnding(code) ? ok(code) : nok(code)
- }
- }
|