开源软件开发论坛 - 码库
首页 搜索 用户列表 FAQ 注册 登录
开源软件开发论坛 - 码库 » 开发语言 » 脚本编程 » JScript & javascript & VBScript » Re: Javascript 语法高亮组件SSH
  Re: Javascript 语法高亮组件SSH
帖子发起人: X3BLOG   发起时间: 2008-05-10 22:48   回复数: 3
楼主
  2008-05-10, 22:48
X3BLOG 离线,最后访问时间: 2008-10-28 11:43:39 X3BLOG

发帖数前10位

超级管理员
职务: 超级管理员
排长
等级: 排长
注册: 2008年3月30日
积分: 94
精华: 0
发贴: 71
Javascript 语法高亮组件SSH
附件:
Highlighter.zip(23K, 下载次数:416)
 

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, '&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-07-02, 00:05
X3BLOG 离线,最后访问时间: 2008-10-28 11:43:39 X3BLOG

发帖数前10位

超级管理员
职务: 超级管理员
排长
等级: 排长
注册: 2008年3月30日
积分: 94
精华: 0
发贴: 71
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 地址: 已登录   来自: 已登录    返回顶部
第 3 楼
  2008-07-08, 15:29
漂流一千万公尺 离线,最后访问时间: 2008-10-27 17:46:50 漂流一千万公尺

发帖数前10位

士兵
等级: 士兵
注册: 2008年3月30日
积分: 41
精华: 0
发贴: 28
Re: Javascript 语法高亮组件SSH
 
好东西!支持!
IP 地址: 已登录   来自: 已登录    返回顶部
第 4 楼
  2008-09-10, 16:24
无我 离线,最后访问时间: 2008-9-10 17:06:16 无我

发帖数前75位

士兵
等级: 士兵
注册: 2008年9月10日
积分: 1
精华: 0
发贴: 1
Re: Javascript 语法高亮组件SSH
 
很好的东西 支持
IP 地址: 已登录   来自: 已登录    返回顶部
 第 1 页 总共 1 页 [共有 4 条记录]
开源软件开发论坛 - 码库 » 开发语言 » 脚本编程 » JScript & javascript & VBScript » Re: Javascript 语法高亮组件SSH
[X3BLOG] - [搜客栈网] - [码库] - [hidotnet]

©2008 Muchool.com All Rights Reserved.
ASP.Net Forums 2: 1.1.3158.31836
Powered by Community Server :: Forums Powered by ASP.NET 2.0