Urara-Blog/node_modules/.pnpm-store/v3/files/8c/1988f78e4f379bc7d3869883e0a3155690c28bb7a305ee0cc167a78c65fb46a74a914f8995e295cd2fef2927d33fb100540a8e262e713ab7a3e2a6a8b2af97
2022-08-14 01:14:53 +08:00

37 lines
816 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'
/**
* @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('lineEnding')
effects.consume(code)
effects.exit('lineEnding')
seen = true
return start
}
if (markdownSpace(code)) {
return factorySpace(
effects,
start,
seen ? 'linePrefix' : 'lineSuffix'
)(code)
}
return ok(code)
}
}