Subversion Repositories Applications.papyrus

Rev

Rev 1987 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
        Copyright (c) 2004-2006, The Dojo Foundation
        All Rights Reserved.

        Licensed under the Academic Free License version 2.1 or above OR the
        modified BSD license. For more information on Dojo licensing, see:

                http://dojotoolkit.org/community/licensing.shtml
*/



dojo.provide("dojo.string.Builder");
dojo.require("dojo.string");
dojo.require("dojo.lang.common");
dojo.string.Builder = function (str) {
        this.arrConcat = (dojo.render.html.capable && dojo.render.html["ie"]);
        var a = [];
        var b = "";
        var length = this.length = b.length;
        if (this.arrConcat) {
                if (b.length > 0) {
                        a.push(b);
                }
                b = "";
        }
        this.toString = this.valueOf = function () {
                return (this.arrConcat) ? a.join("") : b;
        };
        this.append = function () {
                for (var x = 0; x < arguments.length; x++) {
                        var s = arguments[x];
                        if (dojo.lang.isArrayLike(s)) {
                                this.append.apply(this, s);
                        } else {
                                if (this.arrConcat) {
                                        a.push(s);
                                } else {
                                        b += s;
                                }
                                length += s.length;
                                this.length = length;
                        }
                }
                return this;
        };
        this.clear = function () {
                a = [];
                b = "";
                length = this.length = 0;
                return this;
        };
        this.remove = function (f, l) {
                var s = "";
                if (this.arrConcat) {
                        b = a.join("");
                }
                a = [];
                if (f > 0) {
                        s = b.substring(0, (f - 1));
                }
                b = s + b.substring(f + l);
                length = this.length = b.length;
                if (this.arrConcat) {
                        a.push(b);
                        b = "";
                }
                return this;
        };
        this.replace = function (o, n) {
                if (this.arrConcat) {
                        b = a.join("");
                }
                a = [];
                b = b.replace(o, n);
                length = this.length = b.length;
                if (this.arrConcat) {
                        a.push(b);
                        b = "";
                }
                return this;
        };
        this.insert = function (idx, s) {
                if (this.arrConcat) {
                        b = a.join("");
                }
                a = [];
                if (idx == 0) {
                        b = s + b;
                } else {
                        var t = b.split("");
                        t.splice(idx, 0, s);
                        b = t.join("");
                }
                length = this.length = b.length;
                if (this.arrConcat) {
                        a.push(b);
                        b = "";
                }
                return this;
        };
        this.append.apply(this, arguments);
};