Home > Javascript AJAX CSS Archive

Javascript AJAX CSS Archive

Search Gadget (Google Ajax Search API)

ブログやウェブサイトの狭いスペースでも設置できる検索ガジェットです。小さくてもウェブ検索、イメージ検索、ビデオ検索、本の検索などが出来る優れものです。幅は290px、高さは180px に設定しています。高さは調整可能です。 ガジェットのコードです(コピペ用)。

Google Map and Ajax API Search Gadget

何らかの変更があったためコントロールが表示されなくなっていました。
11月3日 : 地図タイプをノーマルに設定したら回復しました。
Google Map と Ajax API Search 兼ねたガジェットです。左のガジェットはシンプル(Simple version)な方のガジェットです。クリックすると移動可能なマーカーが表示されます。ドラッグズームや経度、緯度などがクリックで表示されるFull option バージョンもあります。 地図の左下の方にある小さいボタンを押すと上に検索ボックスが表示されます。もう一度押すと非表示になります。このガジェット一つで地図検索からウェブ、画像、動画、ブログ、本などのあらゆる検索が可能です。

下にある検索はグーグルローカルマップ検索です。地図上のレストラン、ホテルなどを様々な検索が出来ます。検索ボックスに「東京 ホテル」と書き込めば地域のホテルのマップ、住所等の情報が表示されます。

Full Option version:

Simple version:



これらのコードの幅は、420px と設定されています。大きさはブログやサイトのスペースに応じて設定してください。(w=420 の部分を変更すればOKです。)
このガジェットはiframeで生成されています。グーグルでカスタマイズした場合は、IEでY軸のスクロールが出来なくなります。

JS Text Translation - Google gadget (翻訳ガジェット)

Google の提供している Google Ajax Language API を利用した翻訳ガジェットです。現在35カ国語の言語の翻訳が出来ます。

Google Codeページ

言語選択はセレクトメニューのオプションが35 (言語)もあるので、マウスホイールで選択出来るようにしました。一応クッキーを使って最後に翻訳した言語を次回読み出したときに表示できるようにしてます。長い文章の翻訳はまだ出来ませんが、日本語で200文字程度まで翻訳できます。英語は1000文字程度可能です。下のテキストエリアは翻訳した文章を再変換して文章の意味合いに違いがないか確認するためのものです。素早くできるので忙しい方は重宝すると思います。

Continue reading

Javascript Base64 encoder & decoder(Google Gadget)

Javascript base64 encoder and decoder.

手軽に Base64 エンコード(暗号化) & デコード(解読)ができる Google gadget を作りました。

使い方は、上のテキストエリアに貼り付けてボタンを押すだけです。貼り付けるエリアは、data1,data2, data3, data4 の4ヶ所あります。ソースコードもBase64 function の中に文字コード変換のスクリプトを書いてます。下に書いている Javascript のソースコードもシンプルにしましたので(120行くらい)、少しは分かりやすいと思います。対応文字コードは1~3バイトまでです。4バイト以上はまず使うことはないので一般的にテキストエリアに貼り付ける範囲内のものはBase64暗号化・解読が可能です。

    1バイト
  • ASCIIの全て(実装系によりJIS X 0201/Windows-31Jの当該エリアの場合あり)
    • 2バイト
  • JIS X 0208の非漢字の一部
    • 3バイト
  • JIS X 0201の8ビット文字(半角カタカナ)
  • JIS X 0208の漢字エリアの全て
  • JIS X 0212の漢字エリアの全て
  • JIS X 0213の第3・4水準漢字の一部
  • Windows-31Jの拡張文字エリア全て
  • 『ウィキペディア(Wikipedia)』

    Google Gadget の貼り付けコードです。ブログやウェブページに貼り付けられます。

    Source code of Base64_encode, Base64_decode Javascript function.

    1    /****************************************************************************
    2     Javascript Base64 encoder and decoder
    3    
    4     4 Oct. 2008 Samurai-Logic.com
    5    ****************************************************************************/
    6    
    7    var chrs="ABCDEFGHIJKLMNOPQRSTUVWXYZ";    //grobal variable 
    8    
    9    function Base64_encode(str2){
    10   
    11   chrs+=chrs.toLowerCase()+"0123456789+/";
    12   
    13   str2=str2.replace(/\n/g,""); 
    14   
    15   str=[];
    16   var out="";
    17   var j=str2.length;
    18   var z=0;
    19   /*---------------------------------------------------------
    20    In case char is more than 2 bite
    21   ----------------------------------------------------------*/
    22       for (var i=0; z<j;i++) {
    23          var x=str2.charCodeAt(z);
    24   
    25           if(x<128) str[i]=str2.charCodeAt(z);    //  1 Bite(0x00-0x7f) 
    26   
    27           elseif(x<2048) {            //  2 Bites(0x80-0x7ff) 
    28           str[i++] = ((192) | (x >> 6));
    29           str[i] = ((128) | (x & 63));
    30   
    31               }elseif (x < 65536){        //  3 Bites(0x800-0xffff)=2sup16 
    32                   str[i++] = ((224) | ( x >> 12 ));
    33                   str[i++] = ((128) | ((x >> 6 ) & 63)); //3f=63 
    34                   str[i] = ((128) | ( x & 63));
    35   
    36               }else{                // 4 Bites return; 
    37           out=("4 Bites character is not suported"); return; //will never happen here 
    38               }
    39       z++;
    40       }
    41   
    42   /*------------------------------------------------------
    43    Base64 encode
    44   -------------------------------------------------------*/
    45   
    46       var temp=str.length;
    47   
    48       for (var i = 0; i < temp; i += 3){
    49   
    50       var len = ((temp-i)>=3)? 3 : temp-i;
    51   
    52           out += chrs.charAt((str[i] >> 2))
    53   
    54           if (len == 1){        //1 bite 
    55               out += chrs.charAt((str[i] & 3) << 4) + "==";
    56   
    57           } elseif (len == 2) {    //2 bites 
    58               out    += chrs.charAt(((str[i] & 3) << 4) | (str[i+1] >> 4))
    59                   +  chrs.charAt ((str[i+1] & 15) << 2) + "=";
    60   
    61           } else {        //3 bites 
    62               out    += chrs.charAt(((str[i] & 3) << 4) | (str[i+1] >> 4))
    63                   +  chrs.charAt(((str[i+1] & 15) << 2) | (str[i+2] >> 6))
    64                   +  chrs.charAt ((str[i+2] & 63));    /* NOTE:63=0x3f, 15=0xf . */
    65           }
    66       }
    67   return out;
    68   }
    69   

    Javascript Compressor (Modified 1 Oct. 2008)

    Javascript Compressor がほぼ完成しました。正規表現のエラーチェックと括弧の数を数えてエラーがある場合に表示されます。Compression Ratio も表示させるようにしました。

    以前の記事を改良しました。

    正規表現部分の[ ] 内の"/" とスペースがあった場合に圧縮時に(スペースがある場合のみ)スペースが消てしまうので今回は、ループさせてRegExp をecmascript 評価 (eval)してチェックするようにしました。
    例: exp=/[ / ]/;
    通常は、exp=/[ \/ ]/; と書くのですが、実際に正規表現の [ ] 内に"/" があってもjavascript ではエラーになりません。普通に書くと、/ ==> \/, space ==> \s となるのですが、文字コードなどが絡んでどうしても特殊な書き方が必要な例もあるかもしれないのでそれに対応しました。Javascript のコードはとても柔軟性が高いのでまだ100%とは言えないかもしれませんが、一般的なJavascriptのコードではエラーはないと思います。

    また今回、Javascript Code Prettifier もセレクトメニューに追加しました。

    こちらの記事に詳細があります。使い方はただ貼り付けるだけなので簡単です。(js ファイルなどのセットアップせずに何ヶ所でも貼り付けられます。)

    見た目は下にあるJavascript compressor のソースコードのようになります。

    Google Gadget の貼り付けコードです。ブログやウェブページに貼り付けられます。

    Source code of modified Javascript Compressor function.

    Modified on 1 Oct. 2008

    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       elseif (key_q=='"')  { arg = 1; pos++; }     //find pos of keyword " 
    57       elseif ((key_q=='/') && (key_c!="//") && (key_c!="/*") && ((chr.test(last) || (retrn))))
    58                     { arg = 4; pos++;  }     //find pos of keyword / 
    59       elseif (key_c=="//") { arg = 2; pos+=2; }    //find pos of keyword // 
    60       elseif (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          elseif (arg==1) { temp=(str.substring(pos-1, LEN).replace(/\\\\|\\\'/g,"xx")); end = temp.search(d_q)+pos; temp=null;}
    67   
    68          elseif (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          elseif (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  

    Modified on 29 Sep. 2008

    1    /****************************************************************
    2     2008 (C)samurai-logic.com
    3    
    4    
    5     Javascript Compressor
    6    
    7     Last Modified 29 Sep. 2008
    8    ****************************************************************/
    9    function $compress(str){
    10   
    11   var Size=str.length;
    12   
    13   //if(/\n/g.test(str)) return("no end of line"); 
    14   
    15   str=str.replace(/\t+/g," ");
    16   
    17   Reg=/([^\d\w]\n[^\d\w]|[^\d\w]\s[^\d\w]|[\d\w]\s[^\d\w\$\_\#]|[^\d\w]\s[\d\w])/;
    18   
    19   //Exp=/[^\\]\/[^\/]*([\s\,\;]*)((\,\s*(\"|\')|(\w+)\s*\(\s*\/*)[\s\S]+|\/\/[\s\S]+|\/\*[\s\S]+|\s{2,}[\s\S]+|\s*)\n*/; 
    20   //Exp=/[^\\]\/([^\/])?(\s)*(([\,\s]*(\"|\')|(\w+)\s*\(\s*\/*)[\s\S]+|\/\/[\s\S]+|\/\*[\s\S]+|\s{2,}[\s\S]+|\s*)\n*/; 
    21   
    22   //Basic Exp 
    23   Exp=/[^\\]\/([^\/])/;
    24   
    25   chr=/(\(|\=|\[|\:|\||\&|\!|\,)/; // new reg 
    26   
    27   //these RegExp don't need to replace(/\\\\/g,"xx")...but just in case. 
    28   d_q=/([^\\]\"[^\"]*[^\:]|[^\"]\"[\s]*[\:\,\}\]\)\;\.])/;
    29   s_q=/([^\\]\'[^\']*[^\:]|[^\']\'[\s]*[\:\,\}\]\)\;\.])/;
    30   
    31   // Basic RegExp 
    32   //d_q=/([^\\]\"|[^\"]\")/; 
    33   //s_q=/([^\\]\'|[^\']\')/; 
    34   
    35   bracket=new Array();
    36   
    37   bracket[0]=0; bracket[1]=0; bracket[2]=0; bracket[3]="";
    38   
    39   var CODE  = "";        //new string for compressed code 
    40   var cmt   = false;    //cmt=true, char is comment.< -- > cmt=false, char is code. 
    41   var arg   = -1;        //arg decide the keyword to find 
    42   var pos = end = 0;    //pos = postion of open keyword, end = postion of close keyword 
    43   var last=" ";        //last is last char which store to CODE 
    44   var temp="";        //temp is to find another keyword 
    45   var LEN=str.length;
    46   var retrn = false;    // for regexp "return /pat/.test()" 
    47   
    48      /*-----------------------------------------------
    49    While loop begin. check each char in string
    50    ------------------------------------------------*/
    51       while (pos >= 0){
    52       var key_q = str.charAt(pos);    //keyword quot 
    53       var key_c = str.substr(pos,2);    //keyword comment 
    54       var key_r = last + key_c;    //keyword to test key_q is necessary 
    55   
    56       if((pos>6)&&(str.substr(pos-6,6)=="return")&&(/^[\s\n]*\/[^\/\*]/.test(str.substring(pos,LEN))))retrn=true;
    57   
    58       if (key_q=="'")          { arg = 0; pos++; }     //find pos of keyword ' 
    59       elseif (key_q=='"')  { arg = 1; pos++; }     //find pos of keyword " 
    60       elseif ((key_q=='/') && (key_c!="//") && (key_c!="/*") && ((chr.test(last) || (retrn))))
    61                     { arg = 4; pos++;  }     //find pos of keyword / 
    62       elseif (key_c=="//") { arg = 2; pos+=2; }    //find pos of keyword // 
    63       elseif (key_c=="/*") { arg = 3; pos+=2; }    //find pos of keyword /* 
    64       else              { arg =-1; pos++; }
    65   
    66       if (arg>=0){    //if keyword is found 
    67   
    68          if      (arg==0) { temp=(str.substring(pos-1, LEN)); end = temp.search(s_q)+pos; temp=null;}
    69          elseif (arg==1) { temp=(str.substring(pos-1, LEN)); end = temp.search(d_q)+pos; temp=null;}
    70   
    71          elseif (arg==4) { var eol  = str.indexOf("\n", pos);    // find end of line 
    72                     if(eol==-1){return(CODE+"\nerror : no end of line");}
    73                     var temp = next = (str.substring(pos-1,eol+2).replace(/\\\\/g,"xx"));    // end+2 ==> \n 
    74                     end = 0;    var t_l=temp.length-2; retrn=false; 
    75   
    76           /*---------------------------------------------------------------
    77    loop to find next keyword "/" and evaluate Regular Expression
    78    and if RegExp is NG, store error message to var err.
    79    ----------------------------------------------------------------*/
    80   
    81                   while(end<t_l-1){
    82               
    83                      var isReg=true;
    84   
    85                      next=(temp.substring(end,t_l+1));      // store temp to next 
    86   
    87                        end=parseInt(end+next.search(Exp)+2);  //alert("next="+next); //find next key / 
    88   
    89                      try{ eval(temp.substring(0,end));}       //evaluate RegExp 
    90                       catch(e){isReg=false; var err=(e);}// store error msg to err 
    91   
    92                      if(isReg) break;//if RegExp is OK, then break 
    93                   }
    94   
    95                   end=parseInt(end+pos-2); temp=null; next=null; //add pos to end, and release memory 
    96   
    97                     if(!(isReg)){bracket[3]+=err+" : "+(str.substring(pos-1,end+1))+" pos ="+pos;}
    98                    }
    99       
    100         elseif (arg==2) { end = str.indexOf("\n", pos);   pos--; cmt = true; }
    101  
    102         else    /*arg==3*/  { end = str.indexOf("*/", pos); pos--; end++; //pos-- because 2 char "/*" 
    103                         if (end == 0) cmt = false; //if not found(avoid error) 
    104                         else         cmt = true; }
    105  
    106         if (end <= 0) end=str.length-1; end++;
    107  
    108         if (cmt==false) CODE += str.substring(pos-1,end);//alert(str.substring(pos-1,end+1)); 
    109  
    110         pos=end; //if(arg==4) pos++; // end=pos at "/" so add 1 
    111  
    112         cmt=false;  //at last, end up with pos=0  
    113  
    114      }else{ // else keyword is not found 
    115  
    116        if((last==";") && (key_q=="}")){ key_q="/**/"; bracket[1]--;} //replace(/\;\}/g,"}"); 
    117  
    118         if (!(Reg.test(key_r))) { CODE += key_q; last=key_q;}
    119  
    120         switch(key_q){
    121          case"(" : bracket[0]++; break;//in case ( is found then count one 
    122          case")" : bracket[0]--; break;
    123          case"{" : bracket[1]++; break;
    124          case"}" : bracket[1]--; break;
    125          case"[" : bracket[2]++; break;
    126          case"]" : bracket[2]--; 
    127         }
    128          if(pos>=str.length) pos=-1;
    129      } 
    130     } //while loop 
    131    str=null;
    132  
    133    CODE=CODE.replace(/^\s+/,"").replace(/[\s\n]*$/,"").replace(/\;\/\*\*\//g,"}");
    134  
    135    var j=CODE.length;
    136    var el=$id("ratio");//el.style.backgroundColor="#000"; 
    137    el.innerHTML="Compression Ratio:"+j+"/"+Size+"="+eval(j/Size).toFixed(5);
    138  
    139    var hr ="\n/*------------------------------------\n";
    140    var hr2="\n------------------------------------*/\n";
    141  
    142    if (eval(bracket[0]+bracket[1]+bracket[2])!=0) 
    143      CODE+=hr+"Check pair of brackets. \n () :"+bracket[0]+"; {} :"+bracket[1]+"; [] : "+bracket[2]+hr2;
    144    if (bracket[3]!="")
    145      CODE+=hr+"Check Syntax of RegExp. \n"+(bracket[3]).replace(/xx/g,"\\\\")+hr2;
    146  
    147    return(CODE);
    148  }
    149  

    Javascript Code prettifier - Highlight Syntax (JS Code Pro.)

    this gadget (upgrade version of code prettifier) highlights syntax code of javascript just copy and paste, and RegExp in a code will be highlighted by midnight Blue. font-size, font-family are changeable. As additional option, text view and print view button will highlight and show source code to new window. print view is for color print. it's not necessary to set up js file. it's easy to use and very accurate.

    ガジェットの貼り付けコード


    このガジェットは前回紹介した Javascript の Syntax Highlighter ガジェット(JS Code)に機能を追加したものです。

    このツールの特徴は、外部 js ファイルなどのセッティングなどを必要とせず、Javascript のコードをコピーして貼り付けるだけです。グローバル変数、ファンクション名、CSSのクラス名なども毎回違う名前になるようにしてますので、ブログなどに何ヶ所もソースコードを貼り付けても名前がかぶることがありません。

    正規表現(RegExp)の部分が青(midnightBlue)でハイライトされます。他にあまり見られないものです。

    追加機能は、Text view ボタンを追加しています。IE7, FireFox3, Safari, Google Chrome でテストしています。 Opera でテキストエリアの表示(text view)がうまくいきません。Operaはとても優秀なブラウザなので文字化け等への対応がされているためだと思います。文字コードは、現時点ではUnicode のみになります。ガジェットの charset は UTF-8 で設定してます。print view でソースコードをそのままカラープリントが出来ます。

    font (font-family)は前のガジェットと変わらず以下の4種類のタイプに変更できます。
    1. "Arial,Helvetica,sans-serif"
    2. "Comic Sans MS"
    3. "Trebuchet MS,sans-serif"
    4. "Georgia,Times,sans-serif"


    Last Modified : 26 Sep. 2008

    1    /****************************************************************
    2    
    3     23 Sep. 2008 (C)samurai-logic.com
    4    
    5    
    6     Code Prettifier
    7    
    8     Modified on 26 Sep. 2008
    9    
    10   /****************************************************************/
    11   
    12   function $code(str,rnd){
    13   
    14   /*--------------------------------------------------------------
    15    str = string of javascript code
    16    rnd = random 5 digits number for
    17    name of temporary var, class,id and function name
    18   /*---------------------------------------------------------------*/
    19   
    20   js_key=/\b(?=(alert|array|arguments|Boolean|break|caller|callee|case|catch|class|confirm|const|constructor|continue|Date|default|delete|do|else|eval|false|final|finally|for|function|if|isFinite|isNaN|Math|NaN|new|null|Number|Object|parseFloat|parseInt|prompt|prototype|return|String|switch|this|throw|throws|toString|toExponential|toFixed|toPrecision|true|try|typeof|value|valueOf|var|void|while|with)(\W))/g;
    21   
    22   var key="";
    23   
    24   //replace \b to key()just before keywords of javascript 
    25   
    26   str=str.replace(/\t/g,"      ").replace(js_key,key).replace(/&/g,"&amp;")+"\n";
    27   
    28   var CODE  = '';            //CODE is string to modify code 
    29   var arg   = -1;            //arg is selectors of key 
    30   var pos = end = 0;      //pos = end = position of slice str 
    31   var last=" ";            //last is char. before pos 
    32   var temp="";            //temp 
    33   var LEN=str.length;      //LEN is for end of ' and " 
    34   
    35   var spn ="<span style='color:";
    36   var spn_c="<span class='";
    37   var _col = "green;'>";
    38   
    39   var code_e='<br /></span>';
    40   
    41   var retrn = false; // for regexp "return /pat/.test()" 
    42   
    43   chr=/(\(|\=|\[|\:|\||\&|\!|\,)/; // RegExp in front of /pattern/ 
    44   
    45   d_q=/([^\\]\"[^\"]*[^\:]|[^\"]\"[\s]*[\:\,\}\]\)\;\.])/;  //RegExp of double quot. case "\\"", "\":,;.)}] 
    46   s_q=/([^\\]\'[^\']*[^\:]|[^\']\'[\s]*[\:\,\}\]\)\;\.])/;  //RegExp of single quot 
    47   
    48   Exp=/\/[^\/]*([\s\,\;]*)((\,\s*(\"|\')|(e|h|t)\s*\(\s*\/)[\s\S]+|\/\/[\s\S]+|\/\*[\s\S]+|\s{2,}[\s\S]+|\s)\n*/;
    49   
    50       while (pos >= 0){
    51         var cls = "</span>";
    52         var key_q = str.charAt(pos);
    53         var key_c = str.substr(pos,2);
    54         var key_r = last + key_c;
    55         var key_w = str.substr(pos,7);
    56         
    57         if (key_q=="'")            { arg = 0; pos++; }     //find pos of keyword ' 
    58         elseif (key_q=='"')  { arg = 1; pos++; }     //find pos of keyword " 
    59         elseif ((key_q=='/') && (key_c!="//") && (key_c!="/*") && ((chr.test(last) || (retrn))))
    60                           { arg = 4; pos++; }     //find pos of keyword / 
    61         elseif (key_c=="//") { arg = 2; pos+=2; }    //find pos of keyword // 
    62         elseif (key_c=="/*") { arg = 3; pos+=2; }    //find pos of keyword /* 
    63         elseif (key_w==key)  { arg = 5; pos+=8; }    // find pos of js_k