@stryker-mutator/core
Version:
The extendable JavaScript mutation testing framework
30 lines (24 loc) • 717 B
text/typescript
import { EOL } from 'os';
const DEFAULT_MAX_SIZE = 2048;
export class StringBuilder {
private currentLength = 0;
private readonly strings: string[] = [];
private readonly maxSize = DEFAULT_MAX_SIZE;
public append(str: string): void {
this.strings.push(str);
this.currentLength += str.length;
while (this.currentLength > this.maxSize && this.strings.length > 1) {
const shifted = this.strings.shift()!;
this.currentLength -= shifted.length;
}
}
public toString(): string {
return this.strings.join('');
}
public static concat(...builders: StringBuilder[]): string {
return builders
.map((b) => b.toString())
.filter(Boolean)
.join(EOL);
}
}