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');

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…