WEB开发网
开发学院网页设计JavaScript javascript实现的超强语法高亮引擎 阅读

javascript实现的超强语法高亮引擎

 2009-04-11 20:05:19 来源:WEB开发网   
核心提示:SyCODE Syntax Highlighter是一个基于javascript实现的语法高亮程序,实现方式借鉴了著名的db.SyntaxHighlighter采用正则表达式进行关键字匹配,javascript实现的超强语法高亮引擎,处理速度比db.SyntaxHighlighter高出 5~10倍,是目前处理速度最快

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/>');
     }
   }
};

Tags:javascript 实现 超强

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接