/** * @import { * Construct, * State, * TokenizeContext, * Tokenizer * } from 'micromark-util-types' */ import {ok as assert} from 'devlop' import {factorySpace} from 'micromark-factory-space' import {markdownLineEnding} from 'micromark-util-character' import {types} from 'micromark-util-symbol' /** @type {Construct} */ export const lineEnding = {name: 'lineEnding', tokenize: tokenizeLineEnding} /** * @this {TokenizeContext} * Context. * @type {Tokenizer} */ function tokenizeLineEnding(effects, ok) { return start /** @type {State} */ function start(code) { assert(markdownLineEnding(code), 'expected eol') effects.enter(types.lineEnding) effects.consume(code) effects.exit(types.lineEnding) return factorySpace(effects, ok, types.linePrefix) } }