INNER CODE UNIT · TypeScript
PlaceholderReplacer
vinta/pangu.js · src/shared/index.ts:251
export class PlaceholderReplacer {
private static patternCache = new Map<string, RegExp>();
private items: string[] = [];
private index = 0;
private readonly pattern: RegExp;
constructor(
private readonly placeholder: string,
private readonly startDelimiter: string,
private readonly endDelimiter: string,
) {
const cacheKey = `${startDelimiter}${placeholder}${endDelimiter}`;
let pattern = PlaceholderReplacer.patternCache.get(cacheKey);
if (!pattern) {
const escapedStart = this.startDelimiter.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
const escapedEnd = this.endDelimiter.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
pattern = new RegExp(`${escapedStart}${this.placeholder}(\\d+)${escapedEnd}`, 'g');