做为一名死coder,天天最多见的动做就是查看各类API文档,你必定也有过同时打开N个窗口(HTML、PDF、CHM),不停的在编辑器与文档之间切换的感觉吧?怎么说呢,其实我很讨厌这种枯燥无味的动做,那么如何才能提升效率,减小无用功呢?下面就给你们介绍一款很是好用的Mac小工具:Dash。php
官方用一句话就归纳了它的用途:Dash是一个API文档浏览器( API Documentation Browser),以及代码片断管理工具(Code Snippet Manager)。你没看错,它就只有这两个功能,但确实是程序员(至少对于我来讲)最为关心的特性,本身以前也用过了很多相似的工具,能够绝不夸张地说,Dash是它们之中作的最好的一个!html
下载 关于下载我仍是推介官网下载吧(kapeli.com/dash)程序员
强悍的API文档浏览、搜索功能 想必这个功能是你们最经常使用的了吧,天天要反复查看、搜索那么多的API细节,没有一个好工具,单靠本身的双手如何应付得来?窗口不停的切来切去,很烦啊!Dash采用集成单一窗口的方式,很好的解决了这个问题。看下面的截图:编程
上图即是Dash的API浏览器主界面:左侧边栏是各类编程语言以及框架(取决于你下载安装了多少文档集合)的导航大纲,点击某个节点,右边的内容区域就是文档的详细信息啦,很是直观。也能够在左上方的搜索框内经过输入关键字,查找相关的API文档,很是相似全文检索的实现方式,Dash的响应速度很是快!关键是能够同时查询不一样的语言、框架内容,实在是太方便了。看到这里你也许要问了,这跟咱们日常切换到特定的文档窗口(好比一个PDF或者一个CHM文件),再ctrl + f查找有什么区别,不是画蛇添足吗?其实你错了,Dash能够经过快捷键来显示、隐藏文档窗口,它提供了配置界面以便用户自行设置(我比较习惯alt+space,由于其余软件不多用到这个组合键):api
Dash自带了丰富的API文档,涉及各类主流的编程语言和框架,全列出来很吓人的: ActionScript, Android, C++, Cappuccino, Cocos2D, Cocos3D, Corona, CSS, Django, Groovy, HTML, Java, JavaFX, JavaScript, jQuery, Kobold2D, Lua, MySQL, Node.js, Man Pages, Perl, PHP, Python, Ruby, Ruby on Rails, Scala, Sparrow, SQLite, Unity 3D, WordPress, XSLT, XUL浏览器
并且它的文档库采用了docset格式,高级用户基于网站提供的教程,很容易就能自行添加其余的扩充文档,其实Dash在最初发布的时候,只支持不多的几个文档浏览,好像只有Java、HTML、CSS这些,是后来经过用户不断贡献,以及做者及时的反馈,逐步壮大,才具有了如此普遍的语言、框架支持。要添加API文档,打开软件配置界面,切换到Docset选项卡便可看到全部内置的文档列表,按须要自行下载便可(若是是本身制做的docset,双击便可导入Dash):php7
笔者刚接触php没多久,在dash中下载了一个php的文档,只有英文版的,php做为比较流行的脚本语言,文档官网提供了多种语言版本,原本本身想在网上下载别人制做好的php中文文档for dash,可下载下来的几个,看了一下都不太满意,本人有点完美主义,因而萌发了本身动手制做一个双语版的。app
刚开始,参考了dash的官网关于制做docset的教程,仍是找不着思路。后来在网上继续搜索教程,找到了一个日本网友的方法。框架
docset文件本质上就是一个文件夹,选中下载好的英文PHP.docset,右键显示包内容,打开文件夹curl
继续解压tarix.tgz,又获得一个PHP.docset,这难道是俄罗斯套娃吗,继续显示包内容,上图看一下目录层次的结构
目录的层次还真够深的,dash本质上说就是一个离线的api文档浏览器,内部就是一个safari浏览器,文档本质上就是html,下图是一个php的函数abs的页面,右键能够 inspect element(审查元素),
也能够在浏览器中打开页面:http://127.0.0.1:50154/Dash/atuxkowm/php.net/manual/en/function.abs.html
dash的原理就是给离线的html文件创建索引
咱们能不能保持原有的索引不变,仅仅只是替换目录中的英文html为中文html呢,通过测试是可行的。
思路可行,但工做量着实不小,最新版的英文文档下有14888个html文件,怎么样才能弄到对应的中文html文件呢,其实php文档官网已经提供了,
无心间查看了一下英文版的html源码文件,发现了每一个html都有下面的注释
<!-- Mirrored from php.net/manual/en/about.formats.php by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 02 Oct 2018 07:42:58 GMT -->
搜索 HTTrack Website Copier 以后,才知道这是一个专门下载网页离线到本地的一个工具,原来官方的php dash文档是这么搞出来的,我又兴冲冲的研究这个离线下载的玩意,最后搞了好久,仍是放弃了,我本来只想下载中文的文档,也许是我没配置好,下载的中文目录中竟然还下载了别的语言的版本,下载的时间遥遥无期,等不及。
后来本身琢磨了一下,根据html的文件名称很容易推导出中文文档的在线名称,好比:function.abs.html的 地址就是:php.net/manual/zh/f…
我想到了一个idea,那就是遍历英文文档的目录,获得文件的名称,而后根据推导的名称下载文档。 具体的下载方法就是写一个php的脚本,用curl下载网页。
经历了一番调试、再调试的折腾后,也花了很长的时间,终于把中文文档下载下来了。又遇到了新的问题,中文文档里面的连接不少都是指向php的,离线以后的是html文件,不匹配,还有样式的连接仍是指向线上的,因而又花了一番功夫对中文文档作了一些正则的匹配替换,改写离线的样式文件,最后对中英文的文档都加上了相互的连接,制做成了双语版的php dash文档。
追求完美的我,其实最后仍是被战胜了,由于有极少数的英文文档没有对应的中文文档,那这个实际上是php官方的事情了,我也没辙,那就这样呗。
最后附上,我制做的 最新php7.1的双语版dash 文档的下载地址