compile-pattern.js 596 B

123456789101112131415161718192021222324
  1. /**
  2. * @typedef {import('../types.js').CompilePattern} CompilePattern
  3. */
  4. /**
  5. * @type {CompilePattern}
  6. */
  7. export function compilePattern(pattern) {
  8. if (!pattern._compiled) {
  9. const before =
  10. (pattern.atBreak ? '[\\r\\n][\\t ]*' : '') +
  11. (pattern.before ? '(?:' + pattern.before + ')' : '')
  12. pattern._compiled = new RegExp(
  13. (before ? '(' + before + ')' : '') +
  14. (/[|\\{}()[\]^$+*?.-]/.test(pattern.character) ? '\\' : '') +
  15. pattern.character +
  16. (pattern.after ? '(?:' + pattern.after + ')' : ''),
  17. 'g'
  18. )
  19. }
  20. return pattern._compiled
  21. }