ASP语法高亮类代码
2018-09-06 12:52
此类高亮根据Editplus高亮来做的
复制代码 代码如下:
ClassWyd_AspCodeHighLight
PrivateRegEx
PublicKeyword,ObjectCommand,Strings,VBCode
PublicKeyWordColor,ObjectCommandColor,StringsColor,Comment,CodeColor
PrivateSubClass_Initialize()
SetRegEx=NewRegExp
RegEx.IgnoreCase=True设置是否区分字母的大小写True不区分。
RegEx.Global=True设置全程性质。
KeyWordColor=#0000FF
ObjectCommandColor=#FF0000
StringsColor=#FF00FF
Comment=#008000
CodeColor=#993300
Keyword=SetPrivateIfThenSubEndFunctionForNextDoWhileWendTrueFalseNothingClass关建字请自己添加
ObjectCommand=LeftMidRightIntCintClngStringJoinArray函数请自己添加
VBCode=
EndSub
PrivateSubClass_Terminate()
SetRegEx=Nothing
EndSub
PrivateFunctionM_Replace(Str,Pattern,Color)
RegEx.Pattern=Pattern设置模式。
M_Replace=RegEx.Replace(Str,<fontcolor=&Color&>$1</font>)
EndFunction
PrivateFunctionString_Replace(Str,Pattern,Pattern1,Color,IsString)
DimTemp,RetStr
RegEx.Pattern=Pattern1
SetMatches=RegEx.Execute(Str)
ForEachMatchInMatches遍历Matches集合
Temp=Re(Match.value)
Str=Replace(Str,Match.value,Temp)
Next
RegEx.Pattern=Pattern设置模式。
IfIsString=1Then
String_Replace=RegEx.Replace(Str,<fontcolor=&Color&>$1</font>)
Else
String_Replace=RegEx.Replace(Str,<fontcolor=&Color&>$1</font>)
EndIf
EndFunction
PrivateFunctionRe(Str)
DimTRegEx,Temp
SetTRegEx=NewRegExp
TRegEx.IgnoreCase=True设置是否区分字母的大小写。
TRegEx.Global=True设置全程性质。
TRegEx.Pattern=<.*?>
Temp=TRegEx.Replace(Str,)
Temp=Replace(Temp,<,)
Temp=Replace(Temp,>,)
Re=Temp
SetTRegEx=Nothing
EndFunction
PublicFunctionMakeLi()
DimTemp
IfVBCode=Then
MakeLi=
ExitFunction
EndIf
VBCode=HTMLEncode(VBCode)
Temp=M_Replace(VBCode,\b(&Keyword&)\b,KeyWordColor)
Temp=M_Replace(Temp,\b(&ObjEctCommand&)\b,ObjectCommandColor)
Temp=String_Replace(Temp,(.*?),(.*)(<.+?>)(&KeyWord&ObjectCommand&)+(<.+?>)(.*),StringsColor,1)字符串
Temp=String_Replace(Temp,((rem).*),(.*)(<.+?>)(&KeyWord&ObjectCommand&)+(<.+?>)(.*),Comment,0)注释
MakeLi=<FONTCOLOR=&CodeColor&>&RepVbCrlf(Temp)&</FONT>
EndFunction
PublicFunctionRepVbCrlf(fString)
RepVbCrlf=Replace(fString,CHR(10),<BR>)
EndFunction
PublicFunctionHTMLEncode(fString)
IfIsNull(fString)orfString=Then
HTMLEncode=
ExitFunction
EndIf
fString=replace(fString,>,>)
fString=replace(fString,<,<)
fString=Replace(fString,CHR(32),)
fString=Replace(fString,CHR(9),)
fString=Replace(fString,CHR(34),)
fString=Replace(fString,CHR(39),)
fString=Replace(fString,CHR(13),)
fString=Replace(fString,CHR(10)&CHR(10),</P><P>)
fString=Replace(fString,CHR(10),<BR>)
HTMLEncode=fString
EndFunction
EndClass
例子
复制代码 代码如下:
star=timer()
SetTT=NewWyd_AspCodeHighLight
IfRequest(xx)<>Then
TT.VBCode=Request(xx)
Response.writeTT.MakeLi()
REsponse.write<br>&FormatNumber(timer()-star,2)*1000
Else
%>
<FORMMETHOD=POSTaction=Index2.asp>
<TEXTAREANAME=xxROWS=30COLS=80>ClassLih
PrivateRegEx
PublicKeyword,ObjectCommand,Strings,VBCode
PublicKeyWordColor,ObjectCommandColor,StringsColor,Comment
PrivateSubClass_Initialize()
SetRegEx=NewRegExp
KeyWordColor=#0000FF
ObjectCommandColor=#FF0000
StringsColor=#FF00FF
Comment=#008000
Keyword=IfEndForNextFunctionThenDoWhileWendClass
VBCode=
EndSub
PrivateSubClass_Terminate()
SetRegEx=Nothing
EndSub
PrivateFunctionM_Replace(Str,Pattern,Color)
RegEx.IgnoreCase=False设置是否区分字母的大小写。
RegEx.Global=True设置全程性质。
RegEx.Pattern=Pattern设置模式。</TEXTAREA>
<INPUTTYPE=submitvalue=fff>
</FORM>
<%EndIf%>