zoukankan
html css js c++ java
格式化javascript
<
HTML
><
HEAD
><
TITLE
>
Format
</
TITLE
>
<
META
content
="MSHTML 6.00.2800.1528"
name
=GENERATOR
>
<
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,typeof
"
);
//
得到分割字符
this
._wordDelimiters
=
"
,.?!;:\\/<>(){}[]\
"'
\r\n\t=+-|*%@#$^&";
//引用字符
this._quotation = this.str2hashtable("\",
'"
);
//行注释字符
this._lineComment =
"
//
";
//
转义字符
this
._escape
=
"
\\
"
;
//
多行引用开始
this
._commentOn
=
"
/*
"
;
//
多行引用结束
this
._commentOff
=
"
*/
"
;
//
行结束词
this
._rowEnd
=
"
;
"
;
this
._in
=
"
in
"
;
this
.isCompress
=
false
;
this
.style
=
0
;
this
._tabNum
=
0
;
this
.format
=
function
()
{
var
codeArr
=
new
Array();
var
word_index
=
0
;
var
htmlTxt
=
new
Array();
if
(
this
.isCompress)
{
this
._deleteComment
=
true
;
}
//
得到分割字符数组(分词)
for
(
var
i
=
0
; i
<
this
._codetxt.length; i
++
)
{
if
(
this
._wordDelimiters.indexOf(
this
._codetxt.charAt(i))
==
-
1
)
{
//
找不到关键字
if
(codeArr[word_index]
==
null
||
typeof
(codeArr[word_index])
==
'
undefined
'
)
{
codeArr[word_index]
=
""
;
}
codeArr[word_index]
+=
this
._codetxt.charAt(i);
}
else
{
if
(
typeof
(codeArr[word_index])
!=
'
undefined
'
&&
codeArr[word_index].length
>
0
)
word_index
++
;
codeArr[word_index
++
]
=
this
._codetxt.charAt(i);
}
}
var
quote_opened
=
false
;
//
引用标记
var
slash_star_comment_opened
=
false
;
//
多行注释标记
var
slash_slash_comment_opened
=
false
;
//
单行注释标记
var
line_num
=
1
;
//
行号
var
quote_char
=
""
;
//
引用标记类型
var
function_opened
=
false
;
var
bracket_open
=
false
;
var
for_open
=
false
;
//
按分割字,分块显示
for
(
var
i
=
0
; i
<=
word_index; i
++
)
{
//
处理空行(由于转义带来)
if
(
typeof
(codeArr[i])
==
"
undefined
"
||
codeArr[i].length
==
0
)
{
continue
;
}
else
if
(codeArr[i]
==
"
"
||
codeArr[i]
==
"
\t
"
)
{
if
(slash_slash_comment_opened
||
slash_star_comment_opened)
{
if
(
!
this
._deleteComment)
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
}
}
if
(quote_opened)
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
}
}
else
if
(codeArr[i]
==
"
\n
"
)
{
//
处理换行
}
else
if
(codeArr[i]
==
"
\r
"
)
{
slash_slash_comment_opened
=
false
;
quote_opened
=
false
;
line_num
++
;
if
(
!
this
.isCompress)
{
htmlTxt[htmlTxt.length]
=
"
\r\n
"
+
this
.getIdent();
}
//
处理function里的参数标记
}
else
if
(
!
slash_slash_comment_opened
&&!
slash_star_comment_opened
&&
!
quote_opened
&&
this
.isFunction(codeArr[i]))
{
htmlTxt[htmlTxt.length]
=
codeArr[i]
+
"
"
;
function_opened
=
true
;
}
else
if
(
!
slash_slash_comment_opened
&&!
slash_star_comment_opened
&&
!
quote_opened
&&
codeArr[i]
==
this
._isFor)
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
for_open
=
true
;
}
else
if
(
!
slash_slash_comment_opened
&&!
slash_star_comment_opened
&&
!
quote_opened
&&
codeArr[i]
==
"
(
"
)
{
bracket_open
=
true
;
htmlTxt[htmlTxt.length]
=
codeArr[i];
}
else
if
(
!
slash_slash_comment_opened
&&!
slash_star_comment_opened
&&
!
quote_opened
&&
codeArr[i]
==
"
)
"
)
{
bracket_open
=
false
;
htmlTxt[htmlTxt.length]
=
codeArr[i];
}
else
if
(
!
slash_slash_comment_opened
&&!
slash_star_comment_opened
&&
!
quote_opened
&&
codeArr[i]
==
this
._rowEnd)
{
if
(
!
this
.isCompress)
{
if
(
!
for_open)
{
if
(i
<
word_index
&&
(codeArr[i
+
1
]
!=
"
\r
"
&&
codeArr[i
+
1
]
!=
"
\n
"
))
{
htmlTxt[htmlTxt.length]
=
codeArr[i]
+
"
\n
"
+
this
.getIdent();
}
else
{
htmlTxt[htmlTxt.length]
=
codeArr[i]
+
this
.getIdent();
}
}
else
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
}
}
else
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
}
}
else
if
(
!
slash_slash_comment_opened
&&!
slash_star_comment_opened
&&
!
quote_opened
&&
codeArr[i]
==
this
._beginBlock)
{
for_open
=
false
;
if
(
!
this
.isCompress)
{
switch
(
this
.style)
{
case
0
:
this
._tabNum
++
;
htmlTxt[htmlTxt.length]
=
codeArr[i]
+
"
\n
"
+
this
.getIdent();
break
;
case
1
:
htmlTxt[htmlTxt.length]
=
"
\n
"
+
this
.getIdent();
this
._tabNum
++
;
htmlTxt[htmlTxt.length]
=
codeArr[i]
+
"
\n
"
+
this
.getIdent();
break
;
default
:
this
._tabNum
++
;
htmlTxt[htmlTxt.length]
=
codeArr[i];
break
;
}
}
else
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
}
}
else
if
(
!
slash_slash_comment_opened
&&!
slash_star_comment_opened
&&
!
quote_opened
&&
codeArr[i]
==
this
._endBlock)
{
if
(
!
this
.isCompress)
{
this
._tabNum
--
;
if
(i
<
word_index
&&
codeArr[i
+
1
]
!=
this
._rowEnd)
{
htmlTxt[htmlTxt.length]
=
"
\n
"
+
this
.getIdent()
+
codeArr[i];
}
else
{
htmlTxt[htmlTxt.length]
=
"
\n
"
+
this
.getIdent()
+
codeArr[i];
}
}
else
{
if
(i
<
word_index
&&
codeArr[i
+
1
]
!=
this
._rowEnd)
{
htmlTxt[htmlTxt.length]
=
codeArr[i]
+
this
._rowEnd;
}
else
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
}
}
//
处理关键字
}
else
if
(
!
slash_slash_comment_opened
&&!
slash_star_comment_opened
&&
!
quote_opened
&&
this
.isBlockElement(codeArr[i]))
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
//
处理内置对象(后面加一个空格)
}
else
if
(
!
slash_slash_comment_opened
&&!
slash_star_comment_opened
&&
!
quote_opened
&&
this
.isSingleEyeElement(codeArr[i]))
{
if
(codeArr[i]
==
this
._in)
{
htmlTxt[htmlTxt.length]
=
"
"
;
}
htmlTxt[htmlTxt.length]
=
codeArr[i]
+
"
"
;
//
处理双引号(引号前不能为转义字符)
}
else
if
(
!
slash_star_comment_opened
&&!
slash_slash_comment_opened
&&
this
._quotation.contains(codeArr[i]))
{
if
(quote_opened)
{
//
是相应的引号
if
(quote_char
==
codeArr[i])
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
quote_opened
=
false
;
quote_char
=
""
;
}
else
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
}
}
else
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
quote_opened
=
true
;
quote_char
=
codeArr[i];
}
//
处理转义字符
}
else
if
(codeArr[i]
==
this
._escape)
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
if
(i
<
word_index
-
1
)
{
if
(codeArr[i
+
1
].charCodeAt(
0
)
>=
32
&&
codeArr[i
+
1
].charCodeAt(
0
)
<=
127
)
{
htmlTxt[htmlTxt.length]
=
codeArr[i
+
1
].substr(
0
,
1
);
htmlTxt[htmlTxt.length]
=
codeArr[i
+
1
].substr(
1
);
i
=
i
+
1
;
}
}
//
处理多行注释的开始
}
else
if
(
!
slash_slash_comment_opened
&&
!
slash_star_comment_opened
&&!
quote_opened
&&
this
.isStartWith(
this
._commentOn,codeArr,i))
{
slash_star_comment_opened
=
true
;
if
(
!
this
._deleteComment)
{
htmlTxt[htmlTxt.length]
=
this
._commentOn;
}
i
=
i
+
this
.getSkipLength(
this
._commentOn);
//
处理单行注释
}
else
if
(
!
slash_slash_comment_opened
&&
!
slash_star_comment_opened
&&!
quote_opened
&&
this
.isStartWith(
this
._lineComment,codeArr,i))
{
slash_slash_comment_opened
=
true
;
if
(
!
this
._deleteComment)
{
htmlTxt[htmlTxt.length]
=
this
._lineComment;
}
i
=
i
+
this
.getSkipLength(
this
._lineComment);
//
处理忽略词
}
else
if
(
!
slash_slash_comment_opened
&&
!
slash_star_comment_opened
&&!
quote_opened
&&
this
.isStartWith(
this
._ignore,codeArr,i))
{
slash_slash_comment_opened
=
true
;
htmlTxt[htmlTxt.length]
=
this
._ignore;
i
=
i
+
this
.getSkipLength(
this
._ignore);
//
处理多行注释结束
}
else
if
(
!
quote_opened
&&!
slash_slash_comment_opened
&&
this
.isStartWith(
this
._commentOff,codeArr,i))
{
if
(slash_star_comment_opened)
{
slash_star_comment_opened
=
false
;
if
(
!
this
._deleteComment)
{
htmlTxt[htmlTxt.length]
=
this
._commentOff;
}
i
=
i
+
this
.getSkipLength(
this
._commentOff);
}
}
else
{
//
不是在字符串中
if
(
!
quote_opened)
{
//
如果不是在注释重
if
(
!
slash_slash_comment_opened
&&
!
slash_star_comment_opened)
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
//
注释中
}
else
{
if
(
!
this
._deleteComment)
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
}
}
}
else
{
htmlTxt[htmlTxt.length]
=
codeArr[i];
}
}
}
return
htmlTxt.join(
""
);
}
this
.isStartWith
=
function
(str,code,index)
{
if
(
typeof
(str)
!=
"
undefined
"
&&
str.length
>
0
)
{
var
cc
=
new
Array();
for
(
var
i
=
index;i
<
index
+
str.length;i
++
)
{
cc[cc.length]
=
code[i];
}
var
c
=
cc.join(
""
);
if
(
this
._caseSensitive)
{
if
(str.length
>=
code[index].length
&&
c.indexOf(str)
==
0
)
{
return
true
;
}
}
else
{
if
(str.length
>=
code[index].length
&&
c.toLowerCase().indexOf(str.toLowerCase())
==
0
)
{
return
true
;
}
}
return
false
;
}
else
{
return
false
;
}
}
this
.isFunction
=
function
(val)
{
return
this
._function.contains(
this
._caseSensitive
?
val:val.toLowerCase());
}
this
.isBlockElement
=
function
(val)
{
return
this
._blockElement.contains(
this
._caseSensitive
?
val:val.toLowerCase());
}
this
.isChoiceElement
=
function
(val)
{
return
this
._choiceElement.contains(
this
._caseSensitive
?
val:val.toLowerCase());
}
this
.isSingleEyeElement
=
function
(val)
{
return
this
._singleEyeElement.contains(
this
._caseSensitive
?
val:val.toLowerCase());
}
this
.isNextElement
=
function
(from,word)
{
for
(
var
i
=
from;i
<
word.length;i
++
)
{
if
(word[i]
!=
"
"
&&
word[i]
!=
"
\t
"
&&
word[i]
!=
"
\r
"
&&
word[i]
!=
"
\n
"
)
{
return
this
.isChoiceElement(word[i]);
}
}
return
false
;
}
this
.getSkipLength
=
function
(val)
{
var
count
=
0
;
for
(
var
i
=
0
;i
<
val.length;i
++
)
{
if
(
this
._wordDelimiters.indexOf(val.charAt(i))
>=
0
)
{
count
++
;
}
}
if
(count
>
0
)
{
count
=
count
-
1
;
}
return
count;
}
this
.getIdent
=
function
()
{
var
n
=
[];
for
(
var
i
=
0
;i
<
this
._tabNum;i
++
)
{
n[n.length]
=
"
\t
"
;
}
return
n.join(
""
);
}
}
function
doformat(o)
{
var
htmltxt
=
""
;
if
(o
==
null
)
{
alert(
"
domNode is null!
"
);
return
;
}
var
_codetxt
=
""
;
if
(
typeof
(o)
==
"
object
"
)
{
switch
(o.tagName)
{
case
"
TEXTAREA
"
:
case
"
INPUT
"
:
_codetxt
=
o.value;
break
;
case
"
DIV
"
:
case
"
SPAN
"
:
_codetxt
=
o.innerText;
break
;
default
:
_codetxt
=
o.innerHTML;
break
;
}
}
else
{
_codetxt
=
o;
}
var
_syn
=
new
CLASS_FORMAT(_codetxt);
htmltxt
=
_syn.format();
return
htmltxt;
}
function
go()
{
var
code
=
document.getElementById(
"
code
"
).value;
var
xx
=
new
CLASS_FORMAT(code);
var
a
=
new
Date();
if
(document.getElementById(
'
cboOperate
'
).selectedIndex
==
1
)
{
xx.isCompress
=
true
;
}
else
{
xx.style
=
parseInt(document.getElementById(
'
cboStyle
'
).value);
}
document.getElementById(
"
display
"
).value
=
xx.format();
alert(
"
共花:
"
+
(
new
Date().getTime()
-
a.getTime())
+
"
ms
"
);
}
//
-->
</
SCRIPT
>
<
TEXTAREA
id
=code
rows
=12
cols
=100
>
/*
这个是一个类
*/
function xx (num,str){//说明
var a = num;this.aa = a;
this.bb = function(){alert(str);}
this.cc = function(){for(var i=0;i
<
10
;i++){document.title
=i;}}};
xx.prototype.dd
= function(){alert("d
d kd");}
var a
= new
xx(100,"hello"),b
=new
xx(0,"ttyp");
if(1
>
2) { alert();
}
else {
alert(" hell ");
}
a.bb();
b.dd();
alert(a.aa);
</
TEXTAREA
>
<
BR
>
<
select
id
="cboOperate"
onchange
="if(this.selectedIndex==1)document.getElementById('cboStyle').disabled=true;else document.getElementById('cboStyle').disabled=false;"
>
<
option
value
="0"
>
格式化
</
option
>
<
option
value
="1"
>
压缩
</
option
>
</
select
>
<
select
id
="cboStyle"
>
<
option
value
="0"
>
经典
</
option
>
<
option
value
="1"
>
微软
</
option
>
</
select
>
<
INPUT
onclick
=go()
type
=button
value
=go
><
br
>
<
textarea
id
=display
rows
=12
cols
=100
>
</
textarea
>
</
BODY
></
HTML
>
查看全文
相关阅读:
Leetcode167-Two Sum II Input array is sorted-Easy
Leetcode122-Best Time to Buy and Sell Stock II-Easy
Leetcode121-Best Time to Buy and Sell Stock I
Leetcode118_Pascal's Triangle_Easy
Leetcode88_Merge Sorted Array_Easy
Leetcode66-Plus One-Eassy
Open DS
python, general, for quick review
[python] CSV read and write using module xlrd and xlwt
[python] xlrd
原文地址:https://www.cnblogs.com/ejiyuan/p/1122560.html
最新文章
截屏代码
SpringCloudDay3_Eureka学习
使用devtools实现热部署
springcloud_day2_创建一个微服务工程
git命令
nginx坑之一
Xhorse Key Tool Plus and IM608 Which to choose?
How to use Xhorse Key Tool Plus Remote Online-cloud Recognition
How to use VVDI Prog to read BMW B48 ISN?
ow to Cut BMW HU92 Key with Xhorse Dolphin Key Cutting Machine?
热门文章
How to solve Xhorse Error Only Support Wire Key?
How to set up Xhorse VVDI Software on Windows 10?
VVDI MB and AVDI MB Comparison
Program Mercedes W216 All Keys Lost with VVDI MB BGA Tool
VVDI PROG Software Version V4.9.3 Update Feature
Xhorse M4 clamp universal key duplication function
Lintcode449-Char to Integer-Naive
Leetcode1
Lintcode9-Fizz Buzz-Easy
Lintcode27-Reverse 3-digit Integer
Copyright © 2011-2022 走看看