Builder_wev8.js
1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
Copyright (c) 2004-2005, 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");
// NOTE: testing shows that direct "+=" concatenation is *much* faster on
// Spidermoneky and Rhino, while arr.push()/arr.join() style concatenation is
// significantly quicker on IE (Jscript/wsh/etc.).
dojo.string.Builder = function(str){
this.arrConcat = (dojo.render.html.capable && dojo.render.html["ie"]);
var a = [];
var b = str || "";
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(s){
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;
};
};