日期:2014-05-16 浏览次数:20413 次
<HTML><HEAD><TITLE>Format</TITLE> <META content="MSHTML 6.00.2800.1528" name=GENERATOR> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <META content="" name=Author> <META content="" name=Keywords> <META content="" name=Description></HEAD> <BODY> <SCRIPT language=JavaScript> <!-- /**//**//**//** ** ================================================================================================== ** 类名:CLASS_FORMATER ** 功能:JS格式化 ** 示例: --------------------------------------------------------------- var xx = new CLASS_FORMATER(code); document.getElementById("display").innerHTML = xx.format(); --------------------------------------------------------------- ** 作者:ttyp ** 邮件:ttyp@21cn.com ** 日期:2006-5-21 ** 版本:0.1 ** ================================================================================================== **/ function CLASS_FORMAT(code){ //哈希表类 function Hashtable(){ this._hash = new Object(); this.add = function(key,value){ if(typeof(key)!="undefined"){ if(this.contains(key)==false){ this._hash[key]=typeof(value)=="undefined"?null:value; return true; } else { return false; } } else { return false; } } this.remove = function(key){delete this._hash[key];} this.count = function(){var i=0;for(var k in this._hash){i++;} return i;} this.items = function(key){return this._hash[key];} this.contains = function(key){return typeof(this._hash[key])!="undefined";} this.clear = function(){for(var k in this._hash){delete this._hash[k];}} } this._caseSensitive = true; //字符串转换为哈希表 this.str2hashtable = function(key,cs){ var _key = key.split(/,/g); var _hash = new Hashtable(); var _cs = true; if(typeof(cs)=="undefined"||cs==null){ _cs = this._caseSensitive; } else { _cs = cs; } for(var i in _key){ if(_cs){ _hash.add(_key[i]); } else { _hash.add((_key[i]+"").toLowerCase()); } } return _hash; } //获得需要转换的代码 this._codetxt = code; if(typeof(syntax)=="undefined"){ syntax = ""; } this._deleteComment = false; //是否大小写敏感 this._caseSensitive = true; //可以后面加块语句的关键字 this._blockElement = this.str2hashtable("switch,if,while,try,finally"); //是函数申明 this._function = this.str2hashtable("function"); //本行括号内分号不做换行 this._isFor = "for"; this._choiceElement = this.str2hashtable("else,catch"); this._beginBlock = "{"; this._endBlock = "}"; this._singleEyeElement = this.str2hashtable("var,new,return,else,delete,in,case"); //得到分割字符 this._wordDelimiters= " ,.?!;:\\/<>(){}[]\"'\r\n\t=+-|*%@#$^&"; //引用字符 this._quotation = this.str2hashtable("\",'"); //行注释字符 this._lineComment = "//"; //转义字符 this._escape = "\\"; //多行引用开始 this._commentOn = "/*"; //多行引用结束 this._commentOff = "*/"; //行结束