mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-11 21:57:14 +03:00
AI-assisted change prepared by Codex under scheduled architecture-simplification authorization from maintainer pbakaus.
38 lines
847 B
JavaScript
38 lines
847 B
JavaScript
/**
|
|
* Convert a live-config glob pattern to a RegExp.
|
|
*
|
|
* Supports `**` across path segments, `*` within one segment, and `?` for one
|
|
* character. Callers normalize project-relative paths to forward slashes.
|
|
*/
|
|
export function livePathGlobToRegex(pattern) {
|
|
let re = '';
|
|
let i = 0;
|
|
while (i < pattern.length) {
|
|
const c = pattern[i];
|
|
if (c === '*') {
|
|
if (pattern[i + 1] === '*') {
|
|
if (pattern[i + 2] === '/') {
|
|
re += '(?:.*/)?';
|
|
i += 3;
|
|
} else {
|
|
re += '.*';
|
|
i += 2;
|
|
}
|
|
} else {
|
|
re += '[^/]*';
|
|
i += 1;
|
|
}
|
|
} else if (c === '?') {
|
|
re += '[^/]';
|
|
i += 1;
|
|
} else if (/[.+^${}()|[\]\\]/.test(c)) {
|
|
re += `\\${c}`;
|
|
i += 1;
|
|
} else {
|
|
re += c;
|
|
i += 1;
|
|
}
|
|
}
|
|
return new RegExp(`^${re}$`);
|
|
}
|