ASP.NET Forums
首页 搜索 用户列表 FAQ 注册 登录  
ASP.NET Forums » ASP.NET Forums 2.0 » 论坛开发讨论区 » Re: 超强Javascript语法高亮组件SSH
  Re: 超强Javascript语法高亮组件SSH
帖子发起人: 码库   发起时间: 2008-5-10 10:54 PM   回复数: 1
« 上一主题 下一主题 »
楼主
  2008-5-10, 10:54 PM
码库 离线,最后访问时间: 8/27/2008 9:43:34 AM 码库

无等级

士兵
等级: 士兵
注册: 2008年5月3日
积分: 13
精华: 0
发贴: 7
超强Javascript语法高亮组件SSH
附件:
Highlighter.zip(23K, 下载:186),
 

 * SyCODE Syntax Highlighter
 * Version 1.0.0
 * Copyright (C) 2007-2008 Muchool.com
 * http://www.muchool.com

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


调用方法:
Highlighter.Execute(cleanCode, language);

====================黄金分割线========================
效果展示:
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, '&amp;');
            str = str.replace(/</g, '&lt;');
            str = str.replace(/>/g, '&gt;');
            str = str.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;');
            str = str.replace(/[ ]{2}/g, '&nbsp;&nbsp;');
            return str.replace(/\n/g, '<br/>');
        }
    }
};


IP 地址: 已登录   来自: 已登录    返回顶部
第 2 楼
  2008-7-2, 12:57 AM
码库 离线,最后访问时间: 8/27/2008 9:43:34 AM 码库

无等级

士兵
等级: 士兵
注册: 2008年5月3日
积分: 13
精华: 0
发贴: 7
Re: 超强Javascript语法高亮组件SSH
 

SyCODE Syntax Highlighter引擎的Lua语言扩展,将以下代码粘贴到原文件最后即可


 


Highlighter.Brushes.Lua = function() {
    var keywords = 'and do else elseif end function if local nil not or repeat return then until while';
    
    var funcs = 'abs acos appendto ascii asin assert atan atan2 call ceil clock collectgarbage copytagmethods cos date deg dofile dostring error execute exit floor foreach foreachvar format frexp getbinmethod getenv getglobal gettagmethod gsub ldexp log log10 max min mod newtag next nextvar print rad random randomseed rawgetglobal rawgettable rawsetglobal rawsettable read readfrom remove rename seterrormethod setglobal setlocale settag settagmethod sin sqrt strbyte strchar strfind strlen strlower strrep strsub strupper tag tan tmpname tonumber tostring type write writeto';

    var methods = 'cgi cgilua cgilua_url char2hexa chdir dbluaerrorfb dblua_escape decode default_script encodecgi encodetable escape filetype getvalue hexa hexa2char html_mask includehtml insertfield lua_mask maketable map mkurl nopipe preprocess redirect relativeurl relative_url saveluavar savestate script_path script_pdir script_vdir stateerrormethod statefile stdin strsplit unescape';
    
    var packages = 'PI _INPUT _OUTPUT _STDERR _STDIN _STDOUT DBClose DBExec DBOpen DBRow';
    
    var operators =    '\\$nodebug\\b|\\.{2,3}|\\b\\$debug \\$else \\$end \\$endinput \\$if \\$ifnot';

    this.regexList = [
        { regex: new RegExp('--(.*)$', 'gm'),                css: 'color:#008080' },
        { regex: Highlighter.RegexLib.DoubleQuotedString,        css: 'color:#808080' },
        { regex: Highlighter.RegexLib.SingleQuotedString,        css: 'color:#808080' },
        { regex: new RegExp(this.GetKeywords(keywords), 'gmi'),        css: 'color:blue' },
        { regex: new RegExp(this.GetKeywords(funcs), 'gmi'),        css: 'color:#ff1493' },
        { regex: new RegExp(this.GetKeywords(methods), 'gmi'),        css: 'color:#FF8000' },
        { regex: new RegExp(this.GetKeywords(packages), 'gmi'),        css: 'color:#990000' },
        { regex: new RegExp(this.GetKeywords(operators), 'gmi'),    css: 'color:red' }
    ];
}
Highlighter.Brushes.Lua.prototype    = new Highlighter.Brushe();
Highlighter.Brushes.Lua.Aliases    = ['lua'];


IP 地址: 已登录   来自: 已登录    返回顶部
 第 1 页 总共 1 页 [共有 2 条记录]
ASP.NET Forums » ASP.NET Forums 2.0 » 论坛开发讨论区 » Re: 超强Javascript语法高亮组件SSH

友情链接: hiDotNet官方论坛 | hiDotNet知识库 | 其它友情链接

Asp.Net Forums version: 2.5.2725
(C)Copyright 2004-2007, hiDotNet.com. All Rights Reserved.
意见反馈 | 关于我们

Powered by Community Server :: Forums 中文本地化: hiDotNet.com