Urara-Blog/node_modules/.pnpm-store/v3/files/76/f17abda7acdd1bf8408c9881fae409ccade59fb2e1f34687a2dde98455c1f07eb551b11104d035830c2632f391c9af0391f0eaf328c452e43fa4a569bdae5f
2022-08-14 01:14:53 +08:00

41 lines
827 B
Text

/**
* @typedef {import('micromark-util-types').Effects} Effects
* @typedef {import('micromark-util-types').State} State
*/
import {markdownSpace} from 'micromark-util-character'
/**
* @param {Effects} effects
* @param {State} ok
* @param {string} type
* @param {number} [max=Infinity]
* @returns {State}
*/
export function factorySpace(effects, ok, type, max) {
const limit = max ? max - 1 : Number.POSITIVE_INFINITY
let size = 0
return start
/** @type {State} */
function start(code) {
if (markdownSpace(code)) {
effects.enter(type)
return prefix(code)
}
return ok(code)
}
/** @type {State} */
function prefix(code) {
if (markdownSpace(code) && size++ < limit) {
effects.consume(code)
return prefix
}
effects.exit(type)
return ok(code)
}
}