变动如下:
- 新增了内置的Python语法支持
- Fix了样式模板的一些跨浏览器兼容问题
- 补充了一些C#特殊操作符的支持
Enjoy! :)
用代码创建一个属于我的世界……
变动如下:
Enjoy! :)
首先,在这2009年的第一个日子里,祝大家元旦快乐,在新的一年中心想事成。在这个特殊的日子里作为程序员的我也要特殊地庆祝一番。今天这个时刻我向全世界发布CodeStyler,我做的一个给代码上色的小工具,献给每一位程序员博客。:)
项目首页 http://code.google.com/p/code-styler/
下载 http://code.google.com/p/code-styler/downloads/list
首先来说说为什么我要"Reinvent the wheel",也就是说说CodeStyler与众不同之处。其实与众不同之处也没那么多,我个人认为就一个“方便”,主要体现在两点:不依赖于任何博客,随时随地可以格式化代码;不需要修改代码就可以增加对新语言的支持。其中我对第二点的需求是很重视的,因为这意味着高可扩展性,尤其是当我增加了对Dcg模板语法的支持后更加欣赏这个功能了。:)
想新增一个语法的支持很容易,不需要改代码,只要提供两个文件就可以了:一个语法的规则文件,一个样式模板文件。语法规则文件是由一系列正则表达式组成的,描述了语法的各个组成部分(想上色的部分)正则表达式之间有顺序关系,先匹配第一行,替换,再匹配下一行,以此类推。样式模板文件就是一个Dcg语法的模板,它接受一个IEnumerable<Token>参数,这个参数在遍历时会返回一个一个的token(识别出的语法组成部分和普通的文本),接下来想怎么格式化便随意了。在下载的zip包中有源代码,LGPL License,里面有一些自带的语法支持,如C#、HTML、Dcg等可以拿来做参考。:)
此次代码编写的感受就是正则表达式真XX难调,费了九牛二虎之力终于可以面向大家公开了。我个人将自己的一些代码都试了一遍,保证没有问题,不过由于是第一版,加上正则表达式实在容易出错,所以各位实际用下来如果碰到什么问题还请在项目网站上反馈一下,我会尽快fix。下面是一张CodeStyler的窗口截图和一段用CodeStyler格式出来的代码,演示用。
1: <html> 2: <head> 3: <title>Welcome</title> 4: <style type="text/css"> 5: body p { color: black } 6: #myid { 7: margin: 10px; 8: } 9: </style> 10: <script type="text/javascript"> 11: function foo(a, b) { 12: var c = 1; 13: return a + b + c; 14: } 15: </script> 16: </head> 17: <body> 18: <p>Hello World</p> 19: </body> 20: </html>