Urara-Blog/node_modules/.pnpm-store/v3/files/d1/34da606532319bd00143397c6efba563330f424350f8bfa60697d4bb7fc643c9df4e44990fac1b085a5605664c26495e284254e16c62bce080e27843caca3b
2022-08-14 01:14:53 +08:00

40 lines
887 B
Text

/**
* @typedef {import('micromark-util-types').Effects} Effects
* @typedef {import('micromark-util-types').State} State
*/
import {factorySpace} from 'micromark-factory-space'
import {markdownLineEnding, markdownSpace} from 'micromark-util-character'
import {types} from 'micromark-util-symbol/types.js'
/**
* @param {Effects} effects
* @param {State} ok
*/
export function factoryWhitespace(effects, ok) {
/** @type {boolean} */
let seen
return start
/** @type {State} */
function start(code) {
if (markdownLineEnding(code)) {
effects.enter(types.lineEnding)
effects.consume(code)
effects.exit(types.lineEnding)
seen = true
return start
}
if (markdownSpace(code)) {
return factorySpace(
effects,
start,
seen ? types.linePrefix : types.lineSuffix
)(code)
}
return ok(code)
}
}