diff --git a/src/builders.ts b/src/builders.ts index f65c7fb..000bead 100644 --- a/src/builders.ts +++ b/src/builders.ts @@ -25,18 +25,21 @@ export function buildPattern(sequence: RegexSequence): string { return encode(sequence).pattern; } -function encodeFlags(flags: RegexFlags): string { - let result = ''; - - if (flags.global) result += 'g'; - if (flags.ignoreCase) result += 'i'; - if (flags.multiline) result += 'm'; - if (flags.hasIndices) result += 'd'; - if (flags.dotAll) result += 's'; - if (flags.sticky) result += 'y'; - if (flags.unicode) result += 'u'; +const flagsMap: Record = { + global: 'g', + ignoreCase: 'i', + multiline: 'm', + hasIndices: 'd', + dotAll: 's', + sticky: 'y', + unicode: 'u', +}; - return result; +function encodeFlags(flags: RegexFlags): string { + return Object.entries(flags) + .filter(([, value]) => value) + .map(([key]) => flagsMap[key as keyof RegexFlags]) + .join(''); } // Matches unicode mode patterns: \u{...}, \p{...}, \P{...}, but avoids valid \\u{...}, etc