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