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