今天,我们开始修改JS代码了,可惜我的正则不好,不能有很大改动,只好一点点来了。废话不说,开工:
=====================以下为双鱼编辑器中Code.js文件的代码修改=================
1、双鱼编辑器本身对代码的空格支持不够好,因此我在“str = "<div style=\""+CodeDivStyle+"\">" + str + "</div>"; “后面加了一句(也一定要在这句之后):
str = str.replace(/\s{2}/g," ");
意思是替换连续2个空格(不能为一个,否则会把不该替换的也替换)为可显示的HTML代码” ”,这样,代码各行之前就和原代码一样,会有空格,代码看起来更加清晰。
2、格式化VBScript代码函数中,少了一些关键字,我们再加一些,查找“|While|With|Xor”,
在它之后加上:“|Sub|Len|Right|Function|IsNull|IsEmpty|Left|Cint|Instr|Cstr|Replace|Chr|Error|Trim
|Mid|Instrrev|LCase|UCase|Hex”诶呀,累了,不知道还有些什么,没加上的各位朋友自己加吧,头疼。
3、格式化SQL,有待高手来解决,,还有好多没改,目前就修改下注释,变为绿色;
搜索“str = str.replace(/([%\^\*\(\)\-\+=|\/,\.~])/gi,"<font color=\"#999999\">$1</font>");”
把它和它下面一行都删除,之后在函数最后一行 “return (str); ”的前面加上:
“str = FortmatCodeRemark_SQL(str);”
现在写FortmatCodeRemark_SQL函数:
//SQL注释替换为绿色
function FortmatCodeRemark_SQL(str)
{
str = str.replace(/(\/\*)([\s\S]*?)(\*\/)/g,
function() {
var s = arguments[1];
if (arguments[2] != "")
s = "<font style=\"color:#008080\">"+s+ClearColorTag(arguments[2])+arguments[3]+"</font>";
else
s += arguments[3];
return(s);
});
str = str.replace(/([^\-])(\-{2})(.*)/g,
function() {
var s;
if (arguments[3].substr(0,1) != "")
s = "<font style=\"color:#008080\">"+arguments[2]+ClearColorTag(arguments[3])+"</font>";
else
s = arguments[2]+arguments[3];
return(arguments[1]+s);
});
return(str);
}
搜索“str = str.replace(/(N)('.*?')/gi,
function() {
return (arguments[1]+"<font color=\"#FF0000\">"+arguments[2].replace(/<.*?>/g,"")+"</font>");
});”
更改为:“str = str.replace(/('.*?')/gi,
function() {
return ("<font color=\"#FF0000\">"+arguments[1].replace(/<.*?>/g,"")+"</font>");
});”
函数解决了注释为绿色,但是又把特殊符号变为灰色的功能取消了。。还不知道怎么解决。
4、搜索“// 双引号中关键字不变色”,把下面一段函数删除,正则有问题,会捣乱格式。
后面会加个函数,在各个格式化函数中调用。
// 双引号中关键字不变色
str = str.replace(/(")([\s\S]*?)\1/g,
function() {
return(arguments[1]+arguments[2].replace(/(<[\s\S]*?>)/g,"")+arguments[1]);
});
5、搜索“// str = FormatBrace(str);”,把前面的斜杆删除,并把它的下面一句:
“str = FormatValue(str);”放到函数最前面(防止把注释里的双引号中值颜色也变棕色)
6、新增函数:替换收缩图片;在格式化c#,vb.net,vbscript,jscript中相应地方添加该函数。
7、新增函数:双引号中关键字不变色;加在各格式化函数中。
8、增加个VB.NET格式化:
搜索“case "SQL": str = FormatSQL(str,canCollapse); break;”,在其后加上:
“case "VB.NET": str = FormatVBDOTNET(str,canCollapse); break;”
9、更改vbscript,jscript,加上折叠功能。
(以上6-9步代码较多,这里不放出,有兴趣的可以查看code.js。都有详细注释。)
终于,铁棒被我们磨成针了,现在,我们可以真正的使用插入代码功能,试一试,恩。感觉蛮好!上面的代码看着麻烦,,想研究的朋友可以看看,主要做个参考,我更改了什么。方便朋友们以后对这功能的增强。
好了,下面是源码的下载:
FCKeditor2.4.1.rar
插入代码时所更改的文件:(有自己FCKeditor的朋友可以直接下载覆盖)
Fckeditor.rar
--------by:
zss1100
2007.6.18