2009年1月1日星期四

CodeStyler for your Blog

首先,在这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>

3 条评论:

  1. 沙发~~
    seth大哥的步伐太快了,小弟真是望尘莫及啊

    回复删除
  2. @aaron,
    太客气了。下一步我打算好好学习一下Python,争取将Dcg移植到Python上,这样就可以跨平台了,并且还可以用Python语法来编写Dcg模板,一举两得。:)

    回复删除
  3. 小安上周买了两本Phython的书,你们可有得交流了

    回复删除