« 激情所至--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版。该程序作为客户端脚本,不参与服务器端数据传输,仅作为格式转换,可普遍用于广大支持UBB或HTML标签的论坛和社区,当前支持ActionScript、C/C++、XML、普通Document格式。不过目前的问题是对于那些不是在存储时直接把UBB转换成HTML标签的论坛程序来说,大量的标签会造成额外的服务器资源消耗,有点得不偿失,当然,新产品总是有缺陷的,今后会继续改进的......
开发者fictiony对这个产品的介绍
构想了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,或点击下面链接查看
演示效果
//检查语法加亮规则定义,并做相应调整,返回是否成功
//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, " ");
}
}
}
//--------------------------------------------------------------
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.)