/*----------------------------------------------------------------------------\ | String Builder 1.02 | |-----------------------------------------------------------------------------| | Created by Erik Arvidsson | | (http://webfx.eae.net/contact.html#erik) | | For WebFX (http://webfx.eae.net/) | |-----------------------------------------------------------------------------| | A class that allows more efficient building of strings than concatenation. | |-----------------------------------------------------------------------------| | Copyright (c) 1999 - 2002 Erik Arvidsson | |-----------------------------------------------------------------------------| | This software is provided "as is", without warranty of any kind, express or | | implied, including but not limited to the warranties of merchantability, | | fitness for a particular purpose and noninfringement. In no event shall the | | authors or copyright holders be liable for any claim, damages or other | | liability, whether in an action of contract, tort or otherwise, arising | | from, out of or in connection with the software or the use or other | | dealings in the software. | | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | | This software is available under the three different licenses mentioned | | below. To use this software you must chose, and qualify, for one of those. | | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | | The WebFX Non-Commercial License http://webfx.eae.net/license.html | | Permits anyone the right to use the software in a non-commercial context | | free of charge. | | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | | The WebFX Commercial license http://webfx.eae.net/commercial.html | | Permits the license holder the right to use the software in a commercial | | context. Such license must be specifically obtained, however it's valid for | | any number of implementations of the licensed software. | | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | | GPL - The GNU General Public License http://www.gnu.org/licenses/gpl.txt | | Permits anyone the right to use and modify the software without limitations | | as long as proper credits are given and the original and modified source | | code are included. Requires that the final product, software derivate from | | the original source or any software utilizing a GPL component, such as | | this, is also licensed under the GPL license. | |-----------------------------------------------------------------------------| | 2000-10-02 | First version | | 2000-10-05 | Added a cache of the string so that it does not need to be | | | regenerated every time in toString | | 2002-10-03 | Added minor improvement in the toString method | |-----------------------------------------------------------------------------| | Created 2000-10-02 | All changes are in the log above. | Updated 2002-10-03 | \----------------------------------------------------------------------------*/ function StringBuilder(sString) { // public this.length = 0; this.append = function (sString) { // append argument this.length += (this._parts[this._current++] = String(sString)).length; // reset cache this._string = null; return this; }; this.toString = function () { if (this._string != null) return this._string; var s = this._parts.join(""); this._parts = [s]; this._current = 1; this.length = s.length; return this._string = s; }; // private this._current = 0; this._parts = []; this._string = null; // used to cache the string // init if (sString != null) this.append(sString); }