gnablib
Version:
A lean, zero dependency library to provide a useful base for your project.
2 lines • 640 B
JavaScript
/*! Copyright 2023 the gnablib contributors MPL-1.1 */
export class StringBuilder{constructor(t="\n"){this._parts=[],this._nl=t}get length(){let t=0;for(const s of this._parts)t+=s.length;return t}append(t){this._parts.push(t)}appendLine(t){void 0!==t&&this._parts.push(t),this._parts.push(this._nl)}clear(){this._parts.splice(0,this._parts.length)}cutLast(t=1){let s="";for(;t>0;){const r=this._parts[this._parts.length-1];if(r.length>t){const s=r.length-t;return this._parts[this._parts.length-1]=r.substring(0,s),r.substring(s)}this._parts.splice(this._parts.length-1,1),s+=r,t-=r.length}return s}toString(){return this._parts.join("")}}