给语法高亮插件chili加了一个vbscript高亮功能
作者:fanxiaojie 日期:2010-02-02
jquery插件chili是一个非常棒的代码语法高亮插件,可以对各种代码进行很好看的语法高亮。它的最新版是2,2版,下载地址:
http://code.google.com/p/jquery-chili-js/downloads/list
但是它有一个缺点,就是无法对vbscript语言进行高亮。这个缺点令我有些愤怒:为什么chili作者偏偏疏省了vbscript呢?
事实上,我记得另一个语法高亮插件SyntaxHighlighter也不能很好地对vbscript进行语法高亮。
幸好,虽然chili的作者没有写vbscript的语法高亮功能,但也难不倒我。我自己动手写了一个vbscript的语法高亮功能,作为对chili的补充。
我写的这个vbscript能对多数vbscript代码进行很好的高亮,颜色看起来已经很像Dreamweaver了。但是,它也不算完美。最突出的一点是:它无法对vbscript的注释语句进行识别加灰。vbscript的注释语句是一个撇号'打头的语句,而且这个撇号不能在字符串中。我怎么改正则表达式都无法很好的匹配到这个条件。希望我的这个帖子能起到抛砖引玉效果,引来高手对它进行更进一步的修改。
废话不说,先上代码:把下面这段代码加到recipes.js的最后面就可以了:
ChiliBook.recipes["asp.js"]=
{
_name: 'asp',
_case:false,
_main:
{
string:
{
_match: /(?:\"[^\"\\\n]*(?:\\.[^\"\\\n]*)*\")/,
_case: false,
_style:'color:green;'
},
num:
{
_match: /\b[+-]?(?:\d*\.?\d+|\d+\.?\d*)(?:[eE][+-]?\d+)?\b/,
_style:'color: red;'
},
statement:
{
_match: /\b((Case)|(Class)|(Const)|(Dim)|(Do)|(Each)|(Else)|(Elseif)|(Empty)|(End)|(Erase)|(ex ecute)|(FALSE)|(For)|(Function)|(Get)|(Goto)|(If)|(Let)|(Loop)|(Next)|(Nothing)|(Null)|(On)|(Private)|(Public)|(ReDim)|(Resume\s+Next)|(Select)|(Set)|(Sub)|(Then)|(To)|(True)|(Wend)|(While)|(With))\b/,
_case:false,
_style:'color:blue;font-weight:bold;'
},
object:
{
_match: /\b((RegExp)|(Array)|(Request\.(TotalBytes|BinaryRead|Form(\.count)?|Querystring(\.count)?|Cookies(\.Attribute)?|ServerVariables|ClientCertificate))|(Response\.(buffer|CatchControl|Charset|ContentType|cookies|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|AddHeader|AppendTolog|BinaryWrite|Clear|End|Flush|Redirect|Write))|(Application(\.(contents|remove|removeall|lock|unlock))?)|(Session(\.(contents(\.remove|\.removeall)|staticobjects|sessionid|timeout|codepage|lcid|abandon))?)|(Server\.((createobject)|(ex ecute)|(getlastError)|(htmlencode)|(mappath)|(transfer)|(urlencode)))|(Error)|(Err(\.(description|helpcontent|helpfile|number|source|clear|Raise))?))\b/,
_style:'color:#990099;'
},
'function':
{
_match: /\b((Abs)|(Array)|(Asc)|(Atn)|(CBool)|(CByte)|(CCur)|(CDate)|(CDbl)|(Chr)|(CInt)|(CLng)|(Cos)|(CSng)|(CStr)|(Date)|(DateAdd)|(DateDiff)|(DatePart)|(DateSerial)|(DateValue)|(Day)|(Eval)|(Exp)|(Filter)|(Fix)|(FormatCurrency)|(FormatDateTime)|(FormatNumber)|(FormatPercent)|(GetLocale)|(GetObject)|(GetRef)|(Hex)|(Hour)|(InputBox)|(InStr)|(InStrRev)|(Int)|(IsArray)|(IsDate)|(IsEmpty)|(IsNull)|(IsNumeric)|(IsObject)|(Join)|(LBound)|(LCase)|(Left)|(Len)|(LoadPicture)|(Log)|(LTrim)|(Mid)|(Minute)|(Month)|(MonthName)|(MsgBox)|(Now)|(Oct)|(Replace)|(RGB)|(Right)|(Rnd)|(Round)|(RTrim)|(ScriptEngine)|(ScriptEngineBuildVersion)|(ScriptEngineMajorVersion)|(ScriptEngineMinorVersion)|(Second)|(Sgn)|(Sin)|(Space)|(Split)|(Sqr)|(StrComp)|(StrReverse)|(Tan)|(Time)|(Timer)|(TimeSerial)|(TimeValue)|(Trim)|(TypeName)|(UBound)|(UCase)|(VarType)|(Weekday)|(WeekdayName)|(Year))\b/,
_style:'color:DarkOrchid;'
},
'method':
{
_match: /\b((AbsolutePage)|(AbsolutePosition)|(ActiveCommand)|(ActiveConnection)|(ActualSize)|(AddNew)|(Append)|(AppendChunk)|(Attributes)|(BeginTrans)|(BeginTransComplete)|(BOF)|(Bookmark)|(CacheSize)|(Cancel)|(CancelBatch)|(CancelUpdate)|(Charset)|(Clear)|(Clone)|(Close)|(CommandText)|(CommandTimeout)|(CommandType)|(CommitTrans)|(CommitTransComplete)|(CompareBookmarks)|(ConnectComplete)|(ConnectionString)|(ConnectionTimeout)|(CopyRecord)|(CopyTo)|(Count)|(CreateParameter)|(CursorLocation)|(CursorType)|(DataMember)|(DataSource)|(DefaultDatabase)|(DefinedSize)|(Delete)|(DeleteRecord)|(Description)|(Direction)|(Disconnect)|(EditMode)|(EndOfRecordset)|(EOF)|(EOS)|(Errors)|(ex ecute)|(ex ecuteComplete)|(FetchComplete)|(FetchProgress)|(FieldChangeComplete)|(Fields)|(Filter)|(Find)|(Flush)|(GetChildren)|(GetChunk)|(GetRows)|(GetString)|(HelpContext)|(HelpFile)|(Index)|(InfoMessage)|(IsolationLevel)|(Item)|(LineSeparator)|(LoadFromFile)|(LockType)|(MarshalOptions)|(MaxRecords)|(Mode)|(Move)|(MoveComplete)|(MoveFirst)|(MoveLast)|(MoveNext)|(MovePrevious)|(MoveRecord)|(Name)|(NativeError)|(NextRecordset)|(Number)|(NumericScale)|(Open)|(OpenSchema)|(OriginalValue)|(PageCount)|(PageSize)|(Parameters)|(ParentURL)|(Position)|(Precision)|(Prepared)|(Properties)|(Provider)|(Read)|(ReadText)|(RecordChangeComplete)|(RecordCount)|(RecordsetChangeComplete)|(RecordType)|(Refresh)|(Requery)|(Resync)|(RollbackTrans)|(RollbackTransComplete)|(Save)|(SaveToFile)|(Seek)|(SetEOS)|(Size)|(SkipLine)|(Sort)|(Source)|(SQLState)|(Stat)|(State)|(Status)|(StayInSync)|(Supports)|(Type)|(UnderlyingValue)|(Update)|(UpdateBatch)|(Value)|(Version)|(WillChangeField)|(WillChangeRecord)|(WillChangeRecordset)|(WillConnect)|(Willex ecute)|(WillMove)|(Write)|(WriteText))\b/,
_style:'color:#990099;'
},
'const':
{
_match: /\b((vbArray)|(vbBinaryCompare)|(vbBlack)|(vbBlue)|(vbBoolean)|(vbByte)|(vbCr)|(vbCrLf)|(vbCurrency)|(vbCyan)|(vbDataObject)|(vbDate)|(vbDecimal)|(vbDouble)|(vbEmpty)|(vbError)|(vbFirstFourDays)|(vbFirstFullWeek)|(vbFirstJan1)|(vbFormFeed)|(vbFriday)|(vbGeneralDate)|(vbGreen)|(vbInteger)|(vbLf)|(vbLong)|(vbLongDate)|(vbLongTime)|(vbMagenta)|(vbMonday)|(vbNewLine)|(vbNull)|(vbNullChar)|(vbNullString)|(vbObject)|(vbObjectError)|(vbRed)|(vbSaturday)|(vbShortDate)|(vbShortTime)|(vbSingle)|(vbString)|(vbSunday)|(vbTab)|(vbTextCompare)|(vbThursday)|(vbTuesday)|(vbUseSystem)|(vbUseSystemDayOfWeek)|(vbVariant)|(vbVerticalTab)|(vbWednesday)|(vbWhite)|(vbYellow))\b/,
_style:'color:#009999;'
},
event:
{
_match:'/\b((Initialize)|(Terminate)|(application_onstart)|(application_onend)|(session_onstart)|(session_onend))\b/',
_style:'color:blue;'
},
operator:
{
_match:/(\+|-|=|\*|\/|\bmod\b|^|\s_|&)/,
_style:'color:RoyalBlue;font-weight:bold;'
}
}
}
再放一张效果图:
评论: 1 | 引用: 0 | 查看次数: -
发表评论
上一篇
下一篇

文章来自:
Tags:
我刚才对这个Chili重新进行了打包,而且对javascript和及其它的一些语言也进行了稍作修改,使它染色效果更加鲜艳区分度高。下载地址是:
http://fanxiaojie.com/attachments/month_1002/20102314414.rar