root / trunk / web / dojo / dojox / html / format.js @ 11
History | View | Annotate | Download (4.97 KB)
1 | 9 | andrej.cim | /*
|
---|---|---|---|
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(/"/gi,"\""); |
||
146 | txt=txt.replace(/>/gi,">"); |
||
147 | txt=txt.replace(/</gi,"<"); |
||
148 | txt=txt.replace(/&/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 | } |