中国第一Ajax站长门户:www.okajax.com   虚拟主机 域名注册 云主机

javascript实现的超强语法高亮引擎 - okajax.com - Ajax中国

我要投稿 会员登陆 RSS订阅 本站推荐:
您的位置主页 > 网页设计 > Javascript&js > javascript实现的超强语法高亮引擎

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

2009-04-15    文章来源:互联网    浏览次数:

SyCODE Syntax Highlighter是一个基于javascript实现的语法高亮程序,实现方式借鉴了著名的db.SyntaxHighlighter采用正则表达式进行关键字匹配,处理速度比db.SyntaxHighlighter高出 5~10倍,是目前处理速度最快的javascript语法高亮程序。

SyCODE Syntax Highlighter具有速度高可扩展性强的特点,在一台当前主流PC机上可以轻松完成32KB的代码高亮处理,能够一次性完成64KB的代码高亮处理而不出现脚本缓慢提示,通过添加不同的正则表达式可以实现任何一种编程语言的语法高亮处理。

SyCODE Syntax Highlighter下载→

查看效果演示

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);

  1. Effect:  
  2. var Highlighter = {  
  3.     Brushes: {},  
  4.     RegexLib: {  
  5.         MultiLineCComments : new RegExp('/\\*[\\s\\S]*?\\*/''gm'),  
  6.         SingleLineCComments : new RegExp('//.*$''gm'),  
  7.         SingleLinePerlComments : new RegExp('#.*$''gm'),  
  8.         DoubleQuotedString : new RegExp('"(?:\\.|(\\\\\\")|[^\\""\\n])*"','g'),  
  9.         SingleQuotedString : new RegExp("'(?:\\.|(\\\\\\')|[^\\''\\n])*'", 'g')  
  10.     },  
  11.     Match: function(value, index, css) {  
  12.         this.value = value;  
  13.         this.index = index;  
  14.         this.length = value.length;  
  15.         this.css = css;  
  16.     },  
  17.     Execute: function(str,lang) {  
  18.         var registered = new Object();  
  19.         for(var brush in Highlighter.Brushes)  
  20.         {  
  21.             var aliases = Highlighter.Brushes[brush].Aliases;  
  22.             if(aliases == nullcontinue;  
  23.             for(var i=0;i<aliases.length;i++) registered[aliases[i].toLowerCase()] = brush;  
  24.         };  
  25.         if(!!registered[lang.toLowerCase()]) {  
  26.             var ht = new Highlighter.Brushes[registered[lang.toLowerCase()]]();  
  27.             return ht.Highlight(str);  
  28.         }  
  29.         else {  
  30.             str = str.replace(/&/g, '&');  
  31.             str = str.replace(/</g, '<');  
  32.             str = str.replace(/>/g, '>');  
  33.             str = str.replace(/\t/g, '    ');  
  34.             str = str.replace(/[ ]{2}/g, '  ');  
  35.             return str.replace(/\n/g, '<br/>');  
  36.         }  
  37.     }  
  38. }; 

 

文章评论(查看全部)

看不清楚?单击换一张。
loading.. 评论加载中....
关于我们 - 广告服务 - 版权隐私 - 免责声明 - RSS地图 - 网站地图 - 使用帮助 - 返回顶部