/*----------------------------------------------------------------------------\ | |
| 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); | |
} |