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

王朝学院·作者佚名  2009-04-12
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

}

}

};

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航