  
- UID
- 1
- 威望
- 1240 点
- 金钱
- 24019 金币
- 点卡
- 317 点
|
1#
发表于 2004-1-16 09:36
| 只看该作者
[转帖]扩展的代码高亮显示标签
[UploadFile=23_123.rar.info][这个帖子最后由cnangel在 2004/01/16 09:39am 第 1 次编辑]
扩展的代码高亮显示标签(针对lbxp)
一、包含文件
readme.txt说明文件
c.datc/c++ 的关键字文件,放于 data 目录下
c#.datc# 的关键字文件,放于 data 目录下
java.datjava 的关键字文件,放于 data 目录下
vb.datVisual Basic 的关键字文件,放于 data 目录下
perl.datPerl 的关键字文件,放于 data 目录下,XP 版已提供
二、简介
XP 版的论坛,可以高亮显示 Perl 的代码,而 MX 版为了减少资源消耗去
掉了这一功能。由于一些人的需要,我对高亮显示代码标签进行了扩展,使其不
但可以高亮显示 Perl 的代码,还可以高亮显示 C、C#、JAVA、Visual Basic
的代码,而且只要你知道相应语言的关键字,就可以自行扩展,来高亮显示更多
语言的代码。
我所提供的几个关键字文件,是我从 UltraEdit 里偷出来的,若发现有什
么问题可自行修改相应的关键字文件。
三、程序修改方法
1、修改 code.cgi 文件
用文本编辑程序打开 code.cgi 。找到
while ($post =~/\[code\](.+?)\[\/code\]/is){
my $post1 = $1;
$post1=&unHTML($1);
$post1=~s /\<br\>/\n/sg;
$post1=~s /\<p\>/\n\n/sg;
$post1 =~ s/\&/\&/g;
$post1=~s /\<br\>/<br>/sg;
$post =~ s/\[code\](.+?)\[\/code\]/<blockquote><font face=$font>代码:<\/font><hr><font face=$font><pre>$post1<\/pre><\/font><hr><\/blockquote>/is;
}
以上为 MX 版的代码,XP 版的有所不同。
替换为
while ($post =~/\[code(=([\w\+\#]+))?\](.+?)\[\/code\]/is){
my $language=lc($2);
$language="c" if($language eq "c++");
my $post1=&unHTML($3);
my $syntaxfile="${lbdir}data/$language.dat";
if (-e $syntaxfile) {
open(SYNTAX,"<$syntaxfile");
my @perlcodes = <SYNTAX>;
close(SYNTAX);
chomp(@perlcodes);
my @bluecodes = split(/ /,$perlcodes[0]);
foreach(@bluecodes) {
$post1 =~ s/(^|[\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F])($_)([\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F]|$)/$1<font color=0000FF>$2<\/font>$3/isg;
}
@bluecodes = ();
my @redcodes = split(/ /,$perlcodes[1]);
foreach(@redcodes) {
$post1 =~ s/(^|[\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F])($_)([\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F]|$)/$1<font color=FF0000>$2<\/font>$3/isg;
}
@redcodes = ();
my @orangecodes = split(/ /,$perlcodes[2]);
foreach(@orangecodes) {
$post1 =~ s/(^|[\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F])($_)([\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F]|$)/$1<font color=FF8000>$2<\/font>$3/isg;
}
@orangecodes = ();
my @greencodes = split(/ /,$perlcodes[3]);
foreach(@greencodes) {
$post1 =~ s/(^|[\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F])($_)([\s\x7E\x21\x40\x24\x25\x5E\x26\x2A\x28\x29\x2B\x3D\x7C\x2F\x5C\x7B\x7D\x5B\x5D\x3A\x3B\x22\x27\x3C\x3E\x2C\x2E\x3F]|$)/$1<font color=008000>$2<\/font>$3/isg;
}
@greencodes = ();
@perlcodes = ();
}
$post1=~s /\<br\>/\n/sg;
$post1=~s /\<p\>/\n\n/sg;
$post1 =~ s/\&/\&/g;
$post1 =~ s/&<font color=FF8000>gt<\/font>;/>/isg;
$post1 =~ s/&<font color=FF8000>lt<\/font>;/</isg;
$post1=~s /\<br\>/<br>/sg;
$post =~ s/\[code(=([\w\+\#]+))?\](.+?)\[\/code\]/<blockquote><font face=$font>$2 代码:<\/font><hr><font face=$font><pre>$post1<\/pre><\/font><hr><\/blockquote>/is;
}
2、将几个 .dat 的关键字文件放到 cgi-bin 下的 data 目录里,若为 UNIX 系
统,改属性为 666 。
四、标签使用说明
1、仅使用 code 标签,则不高亮显示代码。
如:[code]...(代码)...[/code]
2、使用标签并指定语言。
如:[code=c]...(代码)...[/code]
为高亮显示 C 的代码,等号后面为语言名称,语言名称一定要与保存相应的关
键字的文件名相同才行。
如果这种语言的关键字文件存在,则根据相应语言的关键字高亮显示代码。
如果这种语言的关键字文件不存在,则无法高亮显示其代码,仅普通显示。
五、扩展关键字文件
关键字文件是以相应语言名称为文件名,dat 为扩展名的文本文件,放于
cgi-bin 的 data 目录下。文件的第一行为兰色显示的关键字,第二行为红色显
示的关键字,第三行为橙色显示的关键字,第四行为绿色显示的关键字,后面的
则不管了。关键字之间以一个空格分开。
你可以建立新的关键字文件,以高亮显示新的语言,也可以对以有的关键字
文件进行修改。注意,如果关键字的文件过大,可能会严重占用系统资源。
#########################
#
# 修改提供
# 雷傲论坛河北代理
#一窍不通
#
# QQ:125720970
# EMail:sdcrab@sina.com
#
#2003.7.1
#########################
|
我是一个呼吸着现在的空气而生活在过去的人
这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
我已习惯了孤独,爱上孤独
他让我看清了自我,还原了自我
让我再静静的沉思中得到快乐和满足
再孤独的世界里我一遍又一遍
不厌其烦的改写着自己的过去
延伸到现在与未来
然而那只是泡沫般的美梦
产生的时刻又伴随着破灭的到来
在灰飞烟灭的瞬间我看到的是过程的美丽
而不是结果的悲哀。。。
|
|