« 激情所至--BMW mini cooper主题网站 | 首页 | 2004 MINI COOPER CABRIO 敞篷版 »

分类: 技术眼

2004年03月24日

幻码JS版--FancyCoder for JavaScript

  喜欢泡论坛的coder们有福了,现在少量论坛程序支持对发表的程序原始代码进行语法加亮,比如IPB。我们蓝色理想经典论坛的原Flash版版主fictiony 自在幻想同志经过努力于今天发布了幻码JS--FancyCoder for JavaScript 1.0 beta0321版。该程序作为客户端脚本,不参与服务器端数据传输,仅作为格式转换,可普遍用于广大支持UBBHTML标签的论坛和社区,当前支持ActionScript、C/C++、XML、普通Document格式。不过目前的问题是对于那些不是在存储时直接把UBB转换成HTML标签的论坛程序来说,大量的标签会造成额外的服务器资源消耗,有点得不偿失,当然,新产品总是有缺陷的,今后会继续改进的......

开发者fictiony对这个产品的介绍

我在整理教程的过程中,为了看起来爽,就想在html页面里把代码加亮显示,类似UBB里面的[php]...[/php]的效果。可是在网上到处找相关的工具,就是找不到,郁闷,怎么会有酱子的事。。于是,只好自己写。。。

构想了2天,终于把大致的算法搞清楚了,于是开始编程。动手前花了12分34秒钟的时间构想了这个名称——FancyCoder 听上去挺不错的说~

原本打算用VC写的,不过后来想到有那么多的字符串处理过程,用c可能会考虑很多内存问题,而JS就不需要考虑这些问题,嘿嘿,所以就先把VC的版本搁置了,改用JS来做,反正算法差不到哪儿去

开发中和蓝色、子心、还有很多FlashCoders群里的朋友讨论功能的设置和配置文件的格式(因为要针对多种程序语言来用,类似UltraEdit和EditPlus),于是乎。。。功能要求越来越多,算法也越来越复杂了。。。不过也是好事,因为讨论后发现,FancyCoder完全可以替代UBB的工作,而且还可以更强

好啦,大致开发过程就是酱子拉~欢迎大家测试和提意见建议:)


因为配置文件现在要改成文本文件,以方便其他版本的读取,整个算法也将根据新的要求进行大幅调整。所以,FancyCoder 1.0 beta0321将成为使用JS文件作为配置文件的最后一个版本,现在开源测试,希望大家多多提建议啊~

FancyCoder 1.0 beta0321已经是一个比较完整的版本了,支持css生成、span模式编码、font模式编码、ubb模式编码,以及代码预览。有关配置文件的格式以及FancyCoder的使用说明,大家可以去看下载包里带的帮助文件 readme.txt,或点击下面链接查看

http://www.blueidea.com/user/blueidea/0321/readme.txt


演示效果


//检查语法加亮规则定义,并做相应调整,返回是否成功
//lang: 可为0个或多个,分别表示各个需要检查的语言,如果不写则表示检查所有
function FCCheckSyntaxDef(/*lang, ...*/) {
if (arguments.length > 0) {
var langList = {};
for (var i = arguments.length - 1; i >= 0; i--) {
if (FCSyntaxDef[arguments[i]] != null) langList[arguments[i]] = true;
}
} else {
var langList = FCSyntaxDef;
}
for (var lang in langList) {
var syntax = FCSyntaxDef[lang];
var delim = syntax.delimiters;
if (delim == null) {
syntax.delimiters = "~!@%^&*()-+=|\/{}[]:;\"'<>,.? \t";
} else if (delim.indexOf(" \t") < 0) {
syntax.delimiters += " \t";
}
if (syntax.comments != null) {
if (typeof(syntax.comments) == "string") syntax.comments = syntax.comments.split(" ");
if (syntax.cmtcolor == null) syntax.cmtcolor = "#00ff00";
if (syntax.cmtstyle == null) syntax.cmtstyle = "";
else syntax.cmtsytle = syntax.cmtstyle.toLowerCase();
}
var blocks = syntax.blocks;
for (var classid in blocks) {
var block = blocks[classid];
if (block.color == null) block.color = "#00ffff";
if (block.style == null) block.style = "";
else block.style = block.style.toLowerCase();
}
var keywords = syntax.keywords;
for (var classid in keywords) {
var group = keywords[classid];
if (group.color == null) group.color = "#0000ff";
if (group.style == null) group.style = "";
else group.style = group.style.toLowerCase();
group.list = (" " + (group.list instanceof Array ? group.list.join(" ")
: group.list) + " ").replace(/ +/g, " ");
}
}
}
//--------------------------------------------------------------

演示页面

Posted by POPOEVER at 2004年03月24日 16:51 | back to top
Featured

Trackback Pings

本篇日志的回溯引用地址:

http://plod.popoever.com/acp630/mt-tb.cgi/198

Comments

Post a comment

说老实话,做开心人,欢迎您留露箴言
即便如此,也请遵纪守法,勿放厥辞
汝国如汝母,辱国如辱母,吾辈当自强
您的观点仅代表个人,与本站无关,望请自尊

Thanks for signing in, . Now you can comment. (sign out)

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)


Remember me?