/** * @license * Copyright The Closure Library Authors. * SPDX-License-Identifier: Apache-2.0 */ /** * @fileoverview Utility for fast string concatenation. */ goog.provide('goog.string.StringBuffer'); /** * Utility class to facilitate string concatenation. * * @param {*=} opt_a1 Optional first initial item to append. * @param {...*} var_args Other initial items to * append, e.g., new goog.string.StringBuffer('foo', 'bar'). * @constructor */ goog.string.StringBuffer = function(opt_a1, var_args) { 'use strict'; if (opt_a1 != null) { this.append.apply(this, arguments); } }; /** * Internal buffer for the string to be concatenated. * @type {string} * @private */ goog.string.StringBuffer.prototype.buffer_ = ''; /** * Sets the contents of the string buffer object, replacing what's currently * there. * * @param {*} s String to set. */ goog.string.StringBuffer.prototype.set = function(s) { 'use strict'; this.buffer_ = '' + s; }; /** * Appends one or more items to the buffer. * * Calling this with null, undefined, or empty arguments is an error. * * @param {*} a1 Required first string. * @param {*=} opt_a2 Optional second string. * @param {...?} var_args Other items to append, * e.g., sb.append('foo', 'bar', 'baz'). * @return {!goog.string.StringBuffer} This same StringBuffer object. * @suppress {duplicate} */ goog.string.StringBuffer.prototype.append = function(a1, opt_a2, var_args) { 'use strict'; // Use a1 directly to avoid arguments instantiation for single-arg case. this.buffer_ += String(a1); if (opt_a2 != null) { // second argument is undefined (null == undefined) for (let i = 1; i < arguments.length; i++) { this.buffer_ += arguments[i]; } } return this; }; /** * Clears the internal buffer. */ goog.string.StringBuffer.prototype.clear = function() { 'use strict'; this.buffer_ = ''; }; /** * @return {number} the length of the current contents of the buffer. */ goog.string.StringBuffer.prototype.getLength = function() { 'use strict'; return this.buffer_.length; }; /** * @return {string} The concatenated string. * @override */ goog.string.StringBuffer.prototype.toString = function() { 'use strict'; return this.buffer_; };