SyCODE Syntax Highlighter是一個基於javascript實現的語法高亮程序,實現方式借鑒了著名的db.SyntaxHighlighter採用正則表達式進行關鍵字匹配,處理速度比db.SyntaxHighlighter高出5~10倍,是目前處理速度最快的javascript語法高亮程式。
SyCODE Syntax Highlighter具有速度高可擴展性強的特點,在一台當前主流PC機上可以輕鬆完成32KB的程式碼高亮處理,能夠一次性完成64KB的程式碼高亮處理而不出現腳本緩慢提示,透過添加不同的正規表示式可以實現任何一種程式語言的語法高亮處理。
SyCODE Syntax Highlighter 1.0 內部已實現二十於種系的語法高亮,包括:
1. C/C++
2. C#
3. CSS
4. Delphi/Kylix
5. Pascal
6. Java
7. Vb/Vb.net
8. J(ava)Script
9. ActionScript
10. Php
11. Python
12. Ruby/Rails
13. Perl
14. Assembly
15. Bat 批次
16. UNIX Shell
18. AWK
19. Sql
20. xml/xhtml
example: Highlighter.Execute(cleanCode, language);
Effect:
var Highlighter = {
Brushes: {},
RegexLib: {
MultiLineCComments : new RegExp('/\*[\s\S]*?\*/', 'gm'),
SingleLineCComments : new RegExp('//.*$', 'gm'),
SingleLinePerlComments : new RegExp('#.*$', 'gm'),
DoubleQuotedString : new RegExp('"(?:\.|( \\\")|[^\""\n])*"','g' ),
SingleQuotedString : new RegExp("'(?:\.|( \\\')|[^\''\n])*' ", 'g')
},
Match: function(value, index, css) {
this.value = value;
this.index = index;
this.length = value.length;
this.css = css;
},
Execute: function(str,lang) {
var registered = new Object();
for(var brush in Highlighter.Brushes)
{
var aliases = Highlighter.Brushes[brush].Aliases;
if(aliases == null) continue;
for(var i=0;i<aliases.length;i++) registered[aliases[i].toLowerCase()] = brush;
};
if(!!registered[lang.toLowerCase()]) {
var ht = new Highlighter.Brushes[registered[lang.toLowerCase()]]();
return ht.Highlight(str);
}
else {
str = str.replace(/&/g, '&');
str = str.replace(/</g, '<');
str = str.replace(/>/g, '>');
str = str.replace(/t/g, ' ');
str = str.replace(/[ ]{2}/g, ' ');
return str.replace(/n/g, '<br/>');
}
}
};