escape.js 968 B

12345678910111213141516171819202122
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.escape = void 0;
  4. /**
  5. * Escape all magic characters in a glob pattern.
  6. *
  7. * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}
  8. * option is used, then characters are escaped by wrapping in `[]`, because
  9. * a magic character wrapped in a character class can only be satisfied by
  10. * that exact character. In this mode, `\` is _not_ escaped, because it is
  11. * not interpreted as a magic character, but instead as a path separator.
  12. */
  13. const escape = (s, { windowsPathsNoEscape = false, } = {}) => {
  14. // don't need to escape +@! because we escape the parens
  15. // that make those magic, and escaping ! as [!] isn't valid,
  16. // because [!]] is a valid glob class meaning not ']'.
  17. return windowsPathsNoEscape
  18. ? s.replace(/[?*()[\]]/g, '[$&]')
  19. : s.replace(/[?*()[\]\\]/g, '\\$&');
  20. };
  21. exports.escape = escape;
  22. //# sourceMappingURL=escape.js.map