最近看到一篇文章,其中讲述了各种Javadoc生成chm的方法及工具。
其实我一直以来都是使用自己写的一个工具来生成的,不过这个工具只是生成了.hhp、.hhc和.hhk文件,最后还需要使用FAR进行简单的编辑和压缩。不过我的工具可以配置并识别目录中包含多个API目录的情况,并能够将非API的部分生成TOC文件(之所以要使用FAR进行简单的编辑,也是因为非API的TOC部分需要根据情况自己修改或增减)。
上图是我是用这个工具生成的Eclipse 3.5的chm文档。
其实这个过程很简单,我们只需要构造自己的文档解析器,并按照hhp、hhc和hhk格式规范生成相应的文件就行了。其中文档解析器我使用了Java的正则表达式来解析,其解析式的核心如下:
1 public static final String _INDEX_PATTERN = "<DT><A HREF=\"([\\p{Graph}|\\p{Blank}]*?)\"(\\p{Space}\\p{Alpha}+?=\".*?\")?+><B>(.*?)</B></A>(.*?)\\p{Space}-";
2 public static final String _CONTEXT_PATTERN = "<TD><CODE><B><A HREF=\"((\\p{Graph}*?)#(\\p{Graph}*?))\">(.*?)</A></B>(.*?)</CODE>" ;
3 public static final String _TITLE_PATTERN = "<title>(.*?)</title>";
其中第一行是索引文件条目的表达式,这里我是使用了index-files来生成索引的,当然在没有index-files的时候是使用TOC解析出来的条目构建。
第二行是TOC条目的表达式,第三行是提取文件title时使用的表达式。
当然这里表达式是有缺陷的,比如不能解析不严格的HTML标签等等,不过对于我自己而言已经足够应付绝大多数Javadoc了。
无人分享的快乐不是真快乐,没人分担的痛苦是真痛苦。
posted on 2010-01-12 14:22
Feenn 阅读(1182)
评论(4) 编辑 收藏