Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / html / format.js @ 9

History | View | Annotate | Download (4.97 KB)

1
/*
2
        Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
3
        Available via Academic Free License >= 2.1 OR the modified BSD license.
4
        see: http://dojotoolkit.org/license for details
5
*/
6

    
7

    
8
if(!dojo._hasResource["dojox.html.format"]){
9
dojo._hasResource["dojox.html.format"]=true;
10
dojo.provide("dojox.html.format");
11
dojo.require("dojox.html.entities");
12
(function(){
13
dojox.html.format.prettyPrint=function(_1,_2,_3,_4,_5){
14
var _6=[];
15
var _7=0;
16
var _8=[];
17
var _9="\t";
18
var _a="";
19
var _b=[];
20
var i;
21
var _c=/[=]([^"']+?)(\s|>)/g;
22
var _d=/style=("[^"]*"|'[^']*'|\S*)/gi;
23
var _e=/\s\w+=("[^"]*"|'[^']*'|\S*)/gi;
24
if(_2&&_2>0&&_2<10){
25
_9="";
26
for(i=0;i<_2;i++){
27
_9+=" ";
28
}
29
}
30
var _f=dojo.doc.createElement("div");
31
_f.innerHTML=_1;
32
var _10=dojox.html.entities.encode;
33
var _11=dojox.html.entities.decode;
34
var _12=function(tag){
35
switch(tag){
36
case "a":
37
case "b":
38
case "strong":
39
case "s":
40
case "strike":
41
case "i":
42
case "u":
43
case "em":
44
case "sup":
45
case "sub":
46
case "span":
47
case "font":
48
case "big":
49
case "cite":
50
case "q":
51
case "small":
52
return true;
53
default:
54
return false;
55
}
56
};
57
var div=_f.ownerDocument.createElement("div");
58
var _13=function(_14){
59
var _15=_14.cloneNode(false);
60
div.appendChild(_15);
61
var _16=div.innerHTML;
62
div.innerHTML="";
63
return _16;
64
};
65
var _17=function(){
66
var i,txt="";
67
for(i=0;i<_7;i++){
68
txt+=_9;
69
}
70
return txt.length;
71
};
72
var _18=function(){
73
var i;
74
for(i=0;i<_7;i++){
75
_6.push(_9);
76
}
77
};
78
var _19=function(){
79
_6.push("\n");
80
};
81
var _1a=function(n){
82
_a+=_10(n.nodeValue,_4);
83
};
84
var _1b=function(txt){
85
var i;
86
var _1c;
87
var _1d=txt.split("\n");
88
for(i=0;i<_1d.length;i++){
89
_1d[i]=dojo.trim(_1d[i]);
90
}
91
txt=_1d.join(" ");
92
txt=dojo.trim(txt);
93
if(txt!==""){
94
var _1e=[];
95
if(_3&&_3>0){
96
var _1f=_17();
97
var _20=_3;
98
if(_3>_1f){
99
_20-=_1f;
100
}
101
while(txt){
102
if(txt.length>_3){
103
for(i=_20;(i>0&&txt.charAt(i)!==" ");i--){
104
}
105
if(!i){
106
for(i=_20;(i<txt.length&&txt.charAt(i)!==" ");i++){
107
}
108
}
109
var _21=txt.substring(0,i);
110
_21=dojo.trim(_21);
111
txt=dojo.trim(txt.substring((i==txt.length)?txt.length:i+1,txt.length));
112
if(_21){
113
_1c="";
114
for(i=0;i<_7;i++){
115
_1c+=_9;
116
}
117
_21=_1c+_21+"\n";
118
}
119
_1e.push(_21);
120
}else{
121
_1c="";
122
for(i=0;i<_7;i++){
123
_1c+=_9;
124
}
125
txt=_1c+txt+"\n";
126
_1e.push(txt);
127
txt=null;
128
}
129
}
130
return _1e.join("");
131
}else{
132
_1c="";
133
for(i=0;i<_7;i++){
134
_1c+=_9;
135
}
136
txt=_1c+txt+"\n";
137
return txt;
138
}
139
}else{
140
return "";
141
}
142
};
143
var _22=function(txt){
144
if(txt){
145
txt=txt.replace(/&quot;/gi,"\"");
146
txt=txt.replace(/&gt;/gi,">");
147
txt=txt.replace(/&lt;/gi,"<");
148
txt=txt.replace(/&amp;/gi,"&");
149
}
150
return txt;
151
};
152
var _23=function(txt){
153
if(txt){
154
txt=_22(txt);
155
var i,t,c,_24;
156
var _25=0;
157
var _26=txt.split("\n");
158
var _27=[];
159
for(i=0;i<_26.length;i++){
160
var _28=_26[i];
161
var _29=(_28.indexOf("\n")>-1);
162
_28=dojo.trim(_28);
163
if(_28){
164
var _2a=_25;
165
for(c=0;c<_28.length;c++){
166
var ch=_28.charAt(c);
167
if(ch==="{"){
168
_25++;
169
}else{
170
if(ch==="}"){
171
_25--;
172
_2a=_25;
173
}
174
}
175
}
176
_24="";
177
for(t=0;t<_7+_2a;t++){
178
_24+=_9;
179
}
180
_27.push(_24+_28+"\n");
181
}else{
182
if(_29&&i===0){
183
_27.push("\n");
184
}
185
}
186
}
187
txt=_27.join("");
188
}
189
return txt;
190
};
191
var _2b=function(_2c){
192
var _2d=_2c.nodeName.toLowerCase();
193
var _2e=dojo.trim(_13(_2c));
194
var tag=_2e.substring(0,_2e.indexOf(">")+1);
195
tag=tag.replace(_c,"=\"$1\"$2");
196
tag=tag.replace(_d,function(_2f){
197
var sL=_2f.substring(0,6);
198
var _30=_2f.substring(6,_2f.length);
199
var _31=_30.charAt(0);
200
_30=dojo.trim(_30.substring(1,_30.length-1));
201
_30=_30.split(";");
202
var _32=[];
203
dojo.forEach(_30,function(s){
204
s=dojo.trim(s);
205
if(s){
206
s=s.substring(0,s.indexOf(":")).toLowerCase()+s.substring(s.indexOf(":"),s.length);
207
_32.push(s);
208
}
209
});
210
_32=_32.sort();
211
_30=_32.join("; ");
212
var ts=dojo.trim(_30);
213
if(!ts||ts===";"){
214
return "";
215
}else{
216
_30+=";";
217
return sL+_31+_30+_31;
218
}
219
});
220
var _33=[];
221
tag=tag.replace(_e,function(_34){
222
_33.push(dojo.trim(_34));
223
return "";
224
});
225
_33=_33.sort();
226
tag="<"+_2d;
227
if(_33.length){
228
tag+=" "+_33.join(" ");
229
}
230
if(_2e.indexOf("</")!=-1){
231
_8.push(_2d);
232
tag+=">";
233
}else{
234
if(_5){
235
tag+=" />";
236
}else{
237
tag+=">";
238
}
239
_8.push(false);
240
}
241
var _35=_12(_2d);
242
_b.push(_35);
243
if(_a&&!_35){
244
_6.push(_1b(_a));
245
_a="";
246
}
247
if(!_35){
248
_18();
249
_6.push(tag);
250
_19();
251
_7++;
252
}else{
253
_a+=tag;
254
}
255
};
256
var _36=function(){
257
var _37=_b.pop();
258
if(_a&&!_37){
259
_6.push(_1b(_a));
260
_a="";
261
}
262
var ct=_8.pop();
263
if(ct){
264
ct="</"+ct+">";
265
if(!_37){
266
_7--;
267
_18();
268
_6.push(ct);
269
_19();
270
}else{
271
_a+=ct;
272
}
273
}else{
274
_7--;
275
}
276
};
277
var _38=function(n){
278
var _39=_11(n.nodeValue,_4);
279
_18();
280
_6.push("<!--");
281
_19();
282
_7++;
283
_6.push(_1b(_39));
284
_7--;
285
_18();
286
_6.push("-->");
287
_19();
288
};
289
var _3a=function(_3b){
290
var _3c=_3b.childNodes;
291
if(_3c){
292
var i;
293
for(i=0;i<_3c.length;i++){
294
var n=_3c[i];
295
if(n.nodeType===1){
296
var tg=dojo.trim(n.tagName.toLowerCase());
297
if(dojo.isIE&&n.parentNode!=_3b){
298
continue;
299
}
300
if(tg&&tg.charAt(0)==="/"){
301
continue;
302
}else{
303
_2b(n);
304
if(tg==="script"){
305
_6.push(_23(n.innerHTML));
306
}else{
307
if(tg==="pre"){
308
var _3d=n.innerHTML;
309
if(dojo.isMoz){
310
_3d=_3d.replace("<br>","\n");
311
_3d=_3d.replace("<pre>","");
312
_3d=_3d.replace("</pre>","");
313
}
314
if(_3d.charAt(_3d.length-1)!=="\n"){
315
_3d+="\n";
316
}
317
_6.push(_3d);
318
}else{
319
_3a(n);
320
}
321
}
322
_36();
323
}
324
}else{
325
if(n.nodeType===3||n.nodeType===4){
326
_1a(n);
327
}else{
328
if(n.nodeType===8){
329
_38(n);
330
}
331
}
332
}
333
}
334
}
335
};
336
_3a(_f);
337
if(_a){
338
_6.push(_1b(_a));
339
_a="";
340
}
341
return _6.join("");
342
};
343
})();
344
}