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

25 lines
602 B
Text

/**
* @typedef {import('../types.js').Unsafe} Unsafe
*/
/**
* @param {Unsafe} pattern
* @returns {RegExp}
*/
export function patternCompile(pattern) {
if (!pattern._compiled) {
const before =
(pattern.atBreak ? '[\\r\\n][\\t ]*' : '') +
(pattern.before ? '(?:' + pattern.before + ')' : '')
pattern._compiled = new RegExp(
(before ? '(' + before + ')' : '') +
(/[|\\{}()[\]^$+*?.-]/.test(pattern.character) ? '\\' : '') +
pattern.character +
(pattern.after ? '(?:' + pattern.after + ')' : ''),
'g'
)
}
return pattern._compiled
}