Javascript Compressor
|
Javascript compressor compress your code and find RegExp error and braces. Javascript Code Prettifier is easy to use. Just paste and copy your code. js file setup is not necessary. | Add to your Website: |
Blog articles
Javascript Compressor (Modified 1 Oct. 2008)
Javascript Compressor (Google Gadget)
JS Compressor で excanvas.js を圧縮してみる
JS RegExp
|
This gadget is very usefull RegExp tool. Gadget examin Reglar Expression. (match, search, replace, test,exec, indexOf) | Add to your Website: |
Javascript Source Code of JS Compressor
1 /****************************************************************
2 2008 (C)samurai-logic.com
3
4 Javascript Compressor
5
6 Last Modified 1 Oct. 2008
7 ****************************************************************/
8 function $compress(str){
9
10 var Size=str.length;
11
12 //if(/\n/g.test(str)) return("no end of line");
13
14 str=str.replace(/\t+/g," ");
15
16 Reg=/([^\d\w]\n[^\d\w]|[^\d\w]\s[^\d\w]|[\d\w]\s[^\d\w\$\_\#]|[^\d\w]\s[\d\w])/;
17
18 //Exp=/[^\\]\/[^\/]*([\s\,\;]*)((\,\s*(\"|\')|(\w+)\s*\(\s*\/*)[\s\S]+|\/\/[\s\S]+|\/\*[\s\S]+|\s{2,}[\s\S]+|\s*)\n*/;
19 //Exp=/[^\\]\/([^\/])?(\s)*(([\,\s]*(\"|\')|(\w+)\s*\(\s*\/*)[\s\S]+|\/\/[\s\S]+|\/\*[\s\S]+|\s{2,}[\s\S]+|\s*)\n*/;
20
21 //Basic Exp
22 Exp=/[^\\]\/([^\/])/;
23
24 chr=/(\(|\=|\[|\:|\||\&|\!|\,)/; // new reg
25
26 //d_q=/([^\\]\"[^\"]*[^\:]|[^\"]\"[\s]*[\:\,\}\]\)\;\.])/;
27 //s_q=/([^\\]\'[^\']*[^\:]|[^\']\'[\s]*[\:\,\}\]\)\;\.])/;
28 //d_q=/([^\\]\"|[^\"]\")/;
29 //s_q=/([^\\]\'|[^\']\')/;
30
31 //modified 1 Oct. 2008 don't need to replace \\\" and \\\'...
32 d_q=/[^\\]\"/; //replace(/\\\\|\\\"/g,"xx") temp before search(d_q)
33 s_q=/[^\\]\'/; //replace(/\\\\|\\\'/g,"xx") temp before search(s_q)
34
35 bracket=new Array();
36
37 bracket[0]=0; bracket[1]=0; bracket[2]=0; bracket[3]="";
38
39 var CODE = "";
40 var cmt = false;
41 var arg = -1;
42 var pos = end = 0;
43 var last=" ";
44 var temp="";
45 var LEN=str.length;
46 var retrn = false; // for regexp "return /pat/.test()"
47
48 while (pos >= 0){
49 var key_q = str.charAt(pos);
50 var key_c = str.substr(pos,2);
51 var key_r = last + key_c;
52
53 if((pos>6)&&(str.substr(pos-6,6)=="return")&&(/^[\s\n]*\/[^\/\*]/.test(str.substring(pos,LEN))))retrn=true;
54
55 if (key_q=="'") { arg = 0; pos++; } //find pos of keyword '
56 else if (key_q=='"') { arg = 1; pos++; } //find pos of keyword "
57 else if ((key_q=='/') && (key_c!="//") && (key_c!="/*") && ((chr.test(last) || (retrn))))
58 { arg = 4; pos++; } //find pos of keyword /
59 else if (key_c=="//") { arg = 2; pos+=2; } //find pos of keyword //
60 else if (key_c=="/*") { arg = 3; pos+=2; } //find pos of keyword /*
61 else { arg =-1; pos++; }
62
63 if (arg>=0){ //if keyword is found
64
65 if (arg==0) { temp=(str.substring(pos-1, LEN).replace(/\\\\|\\\"/g,"xx")); end = temp.search(s_q)+pos; temp=null;}
66 else if (arg==1) { temp=(str.substring(pos-1, LEN).replace(/\\\\|\\\'/g,"xx")); end = temp.search(d_q)+pos; temp=null;}
67
68 else if (arg==4) { var eol = str.indexOf("\n", pos); // find end of line
69 if(eol==-1){return(CODE+"\nerror : no end of line");}
70 var temp = next = (str.substring(pos-1,eol+2).replace(/\\\\/g,"xx")); // end+2 ==> \n
71 end = 0; var t_l=temp.length-2; retrn=false;
72
73 while(end<t_l-1){ //(str.substring(pos-1,end+1))==> /pat/
74
75 var isReg=true;
76
77 next=(temp.substring(end,t_l+1)); // store temp to next
78
79 end=parseInt(end+next.search(Exp)+2); //alert("next="+next); //find next key /
80
81 try{ eval(temp.substring(0,end));}catch(e){isReg=false; var err=(e);}
82
83 if(isReg) break;
84 }
85
86 end=parseInt(end+pos-2); temp=null; next=null;
87
88 if(!(isReg)){bracket[3]+=err+" : "+(str.substring(pos-1,end+1))+" pos ="+pos;}
89 }
90
91 else if (arg==2) { end = str.indexOf("\n", pos); pos--; cmt = true; }
92
93 else /*arg==3*/ { end = str.indexOf("*/", pos); pos--; end++; //pos-- because 2 char "/*"
94 if (end == 0) cmt = false; //if not found(avoid error)
95 else cmt = true; }
96
97 if (end <= 0) end=str.length-1; end++;
98
99 if (cmt==false) CODE += str.substring(pos-1,end);//alert(str.substring(pos-1,end+1));
100
101 pos=end; //if(arg==4) pos++; // end=pos at "/" so add 1
102
103 cmt=false; //at last, end up with pos=0
104
105 }else{ // else keyword is not found
106
107 if((last==";") && (key_q=="}")){ key_q="/**/"; bracket[1]--;} //replace(/\;\}/g,"}");
108
109 if (!(Reg.test(key_r))) { CODE += key_q; last=key_q;}
110
111 switch(key_q){
112 case "(" : bracket[0]++; break;
113 case ")" : bracket[0]--; break;
114 case "{" : bracket[1]++; break;
115 case "}" : bracket[1]--; break;
116 case "[" : bracket[2]++; break;
117 case "]" : bracket[2]--;
118 }
119 if(pos>=str.length) pos=-1;
120 }
121 }
122 str=null;
123
124 CODE=CODE.replace(/^\s+/,"").replace(/[\s\n]*$/,"").replace(/\;\/\*\*\//g,"}");
125
126 var j=CODE.length;
127 var el=$id("ratio");//el.style.backgroundColor="#000";
128 el.innerHTML="Compression Ratio:"+j+"/"+Size+"="+eval(j/Size).toFixed(5);
129
130 var hr ="\n/*------------------------------------\n";
131 var hr2="\n------------------------------------*/\n";
132
133 if (eval(bracket[0]+bracket[1]+bracket[2])!=0)
134 CODE+=hr+"Check pair of brackets. \n () :"+bracket[0]+"; {} :"+bracket[1]+"; [] : "+bracket[2]+hr2;
135 if (bracket[3]!="")
136 CODE+=hr+"Check Syntax of RegExp. \n"+(bracket[3]).replace(/xx/g,"\\\\")+hr2;
137
138 return(CODE);
139 }
140
Javascript Source Code of JS RegExp
1
2 /****************************************************************
3 JS RegExp Function $Run()
4
5 11 Sep. 2008 (C) Samurai-Logic.com
6 ****************************************************************/
7 function $run(){
8
9 var out=$id("D");
10
11 var exp=$id("regular").value; //match, search, replace etc.
12
13 var reg=$id("area1").value;
14
15 var hr="------------------------";
16
17 var str=reg.replace(/\s+$/,"").replace(/^\/+(\s|\S)*?(\/|\/[gimy]+)$/g,"#//////#");
18
19 if ((str.search(/\#\/\/\/\/\/\/\#/)==-1) && (!(exp=="indexOf"))){
20 out.value="Invalid RegExp.\n"+hr+"\nExamle:\n/Regular Expression/gim";
21 $cc(4); return;
22 }
23 reg=reg.replace(/\s+$/,"");
24
25 var rep=$id("area2").value;
26
27 if(reg=="") {out.value="input RegExp"; $cc(4); return;}
28
29 var temp=new String(tt[N]);
30
31 var data=$id(temp).value;
32
33 if(data=="") {out.value="no data"+parseInt(N+1); $cc(4); return;}
34
35 var result="";
36 switch(exp){
37 case "match" : try{ result=data.match(eval(reg));}
38 catch(e) {out.value="error:"+e; break;}
39
40 if (result==null){ out.value="RegExp doesn't match data"+parseInt(N+1);
41 }else {var res="";
42 res+="RegExp = data"+parseInt(N+1)+"."+exp+"("+reg+")\n"+hr+"\n";
43 res+="Total match : "+result.length+"\n";
44 for(var i = 0;i<result.length;i++) res+=result[i]+"\n";
45 out.value=res;
46 }
47 delete result; delete res; break;
48
49 case "exec" : try{ result=eval(reg).exec(data);}
50 catch(e) {out.value="error:"+e; break;}
51
52 if (result==null || result=="")
53 out.value="no RegExp match in data"+parseInt(N+1);
54 else out.value="RegExp = data"+parseInt(N+1)+"."+exp+"("+reg+")\n"+hr+"\n"+result[0];
55 delete result; break;
56
57 case "test" : try{ result=eval(reg).test(data); }
58 catch(e) {out.value="error:"+e; break;}
59
60 out.value="RegExp = "+reg+"."+exp+"(data"+parseInt(N+1)+")\n"+hr+"\n"+result;
61 delete result; break;
62
63 case "search" : try{ result=data.search(eval(reg)); }
64 catch(e) {out.value="error:"+e; break;}
65
66 out.value="RegExp = data"+parseInt(N+1)+"."+exp+"("+reg+")\n"+hr+"\n"+result+" :Char="+data.substr(result-1,3);
67 break;
68
69 case "indexOf" : if(rep=="" || (!(/\d/.test(rep)))) rep=0;
70 try{ result=data.indexOf(reg,rep); }
71
72 catch(e) {out.value="error:"+e; break;}
73 out.value="Expression = data"+parseInt(N+1)+"."+exp+"('"+reg+"',"+rep+")\n"+hr+"\n"+result;
74 break;
75
76 case "replace" : if(rep=="") rep="";
77 try{ result=data.replace(eval(reg),rep); }
78 catch(e) {out.value="error:"+e; break;}
79
80 out.value="RegExp = data"+parseInt(N+1)+"."+exp+"("+reg+",'"+rep+"')\n"+hr+"\n"+result;
81 break;
82
83 default: break;
84 }
85
86 $cc(4);
87 }
88
HOME
BLOG
Inkscape
BLOG
SYSTEM
Search
ex-index page