源码下载 | 网页特效 | 广告代码 | 站长必备 | 站长工具
会员投稿 投稿指南 RSS订阅
您当前的位置是:主页>网络编程>Javascript教程>

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

www.jz123.cn  2009-05-05   来源:   中国建站    责任编辑(袁袁)    我要投递新闻

  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('"(?:\.|(),
        SingleQuotedString : new RegExp("'(?:\.|(", '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/>');
        }
    }
};


上一篇:javascript命名空间管理和文件同步载入 下一篇:javascript文档的编码问题解决

评论总数:1 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图