blob: 464a1cacb2babdddce431cf6109eaf932554428e [file] [log] [blame]
/*----------------------------------------------------------------------------\
| 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);
}