又回编程,最近在研究Mac下的神器Dash, 一款程序员编程利器,无敌一般的存在,查询调用各种手册极其方便,各种docsets文档应有尽有,引无数英雄竞相模仿,终难望其项背。懂得都懂。。。

但Dash也有其缺点,就是其中的docsets文档大部分都是英文资料,中文资料太少了。我把相关的制作docsets的资料汇总如下,各位看官可以把自己的中文手册制作成docsets,导入到Dash中,方便管理查阅。

zeal是仿造dash的一款win下的软件,以下内容部分是以zeal举例,制作的docset通用,

zeal 在win 下 和 Linux 均有可用版本 dash 则只在 Mac 可用

言归正传:

目录

一、将chm文件转为docset文档

二、利用下载网站制作 dcocSet 文档(3 步)

镜像文档网站

制作索引文件

移动docSet目录

三、HTML网页制作 dcocSet 文档

以后有时间再补充其他各种制作方式,dash真香

参考文献

Docset Generation Guide(dash制作docset英文说明)


一、将chm文件转为docset文档

GitHub - ngs/chm2docset: A tool for converting Compiled HTML Help (.chm) file to Kapeli's Dash compatible Apple DocSet bundlehttps://github.com/ngs/chm2docset

里面内容很简单,不重复了。

二、利用下载网站制作 dcocSet 文档(3 步)

镜像文档网站

做镜像网站就是把整个网站爬下来,并且把 css 和 js 图片等静态资源文件转换成本地的路径, 主要使用工具是 wget

以 vue 中文文档为例:

wget -r -p -np -k https://cn.vuejs.org/

制作索引文件

zeal 可以快速的搜索文档主要利用了 sqlite 数据库,在数据库中有一张 serchIndex 表, 这张表常用的字段有三个,分别是 name , type, path

  • name
    关键词

  • type
    关键词的类型,代表该关键词是函数,还是类,等等可选的字段有 Sections, Fun, classes

  • path
    点击关键词要跳转的路径

所以,关键是制作一个这种合理的索引表
下面是使用 ruby 实现制作索引表的功能,以及一些目录的生成

require 'nokogiri'
require "sqlite3"
require "fileutils"
class HtmlToDocdef initialize(html_dir, docset_name)@html_path = html_dir@docset_name = "#{docset_name}.docset"@name = docset_namemkdir_filecreate_plist@con = SQLite3::Database.new(@dsidx)@con.execute("CREATE TABLE IF NOT EXISTS searchIndex(id INTEGER PRIMARY KEY, name TEXT, type TEXT, path TEXT)");end# 插入数据def update_db(name, path, type = 'Classes')@con.execute('INSERT OR IGNORE INTO searchIndex(name, type, path) VALUES (?,?,?)',[name,type,path])puts name,pathend# 提取url,根据你的需求更改提取规则def add_urls(html_path)doc = Nokogiri::HTML(File.open(html_path).read)doc.css("h3>a").each do |tag|name = tag.parent.text.stripif name.size > 0 && tag[:href]path = tag[:href].strip.split("#").lastupdate_db(name,html_path + "#" + path)endendend# 生成目录def mkdir_fileFileUtils.rm_r(@docset_name) if File.exists?(@docset_name)@doc_dir = "#{@docset_name}/Contents/Resources/Documents"FileUtils.mkdir_p(@doc_dir)@dsidx = "#{@docset_name}/Contents/Resources/docSet.dsidx"FileUtils.touch(@dsidx)@plist = "#{@docset_name}/Contents/info.plist"FileUtils.touch(@plist)puts "目录创建成功"end# 制作plist 文件# 各种key 的意思请参考 dash 官方文档def create_plistplist = <<-EOF<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>CFBundleIdentifier</key><string>#{@name}</string><key>CFBundleName</key><string>#{@name}</string><key>DashDocSetFamily</key><string>#{@name}</string><key>DocSetPlatformFamily</key><string>requests</string><key>isDashDocset</key><true/><key>isJavaScriptEnabled</key><true/><key>dashIndexFilePath</key><string>#{@name}</string></dict></plist>EOFFile.open(@plist,"w").write(plist)end# 移动文档def copy_filesFileUtils.cp_r(@html_path.split("/").first, @doc_dir)# 将docSet 文档移动到 zeal 目录下# local_doc_dir = "/home/dccmmtop/.local/share/Zeal/Zeal/docsets"# FileUtils.cp_r(@docset_name,  local_doc_dir)enddef startDir.open(@html_path).each do |file|next unless file =~ /.html$/add_urls(File.join(@html_path, file))endcopy_filesend
endif ARGV[0] == "-h"puts 'ruby ./convert.rb "要生成文档的html地址(要包含整个网站的根目录)" "生成文档的名字"'puts "例子: ruby convert.rb cn.vuejs.org/v2/guide vue"
elseHtmlToDoc.new(ARGV[0],ARGV[1]).start
end

移动docSet目录

最后,将制作好的 docSet 文件夹移动到 zeal 的文档目录下, 也可以将上面脚本中 copy_files 方法最后两行去掉

三、HTML网页制作 dcocSet 文档

可以参考上面的第二,作者太懒

或者可以参考下面的连接:

Dash助手- 任意html转换为Docset_cangdu的博客-CSDN博客

以后有时间再补充其他各种制作方式,dash真香

参考文献

Docset Generation Guide(dash制作docset英文说明)

Docset Generation Guide - Kapeli

感谢相关各方,作者太懒不一一列举了

手把手教你制作docSet文档(用于Dash或zeal)相关推荐

  1. matlab文档查阅使用训练(手把手教你阅读matlab文档)全网首发原创

    本文章是为了,熟悉阅读matlab的帮助文档而设立,其实更多的应该是理论知识,我读本科的时候,刚接触matlab发现相当难使用,也不能静下心来看帮助文档,总想买本书,照着敲语法,到了研1时候,也试着买 ...

  2. 手把手教你编写接口需求文档

    作者:果果  转载已取得作者授权 一.什么是接口 百科上对接口的定义:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用 ...

  3. 怎么将自己的头像p到特定的背景图_【后期修图】photoshop手把手教你制作属于自己的酷炫的微信头像...

    原标题:[后期修图]photoshop手把手教你制作属于自己的酷炫的微信头像 效果图先放上 1.新建一个白色的背景,这里是1080*720的.然后在图层面板下面单击创建新的调整图层/渐变,设 置 好渐 ...

  4. OpenCV训练分类器制作xml文档

    opencv 2.1网上查的另一种资料 训练分类器成功,在此与大家分享. 参考英文资料网址: http://note.sonots.com/SciSoftware/haartraining.html# ...

  5. 8、Java如何制作帮助文档

    1:如何制作帮助文档     (1)写一个类     (2)加入文档注释     (3)通过javadoc工具生成即可         javadoc -d 目录 -author -version A ...

  6. 【Java】文如何制作帮助文档

    如何制作帮助文档: (1)写一个类 (2)加入文档注释 (3)通过javadoc工具生成即可 javadoc -d 目录 -author -version ArrayTool.java ps. 输入后 ...

  7. Android反编译:手把手教你制作高德地图车机共存版

    Android反编译:手把手教你制作高德地图车机共存版 前言 前期准备 反编译流程 反编译获取有效信息 修改关键信息 修改包名 修改其它配置 生成APK 重新打包成apk 重新签名 绕过校验机制 定位 ...

  8. 天线巴伦制作和原理_【火腿DIY】巴伦知识图集|手把手教您制作1:1短波巴伦

    洛阳市无线电运动协会 CQ<现代通讯>杂志官网 黑暗森林的博客 什么是巴伦?短波用巴伦的作用是什么? 巴伦(英文:Balun)是平衡Balanced和不平衡Unbalanced转换器的英文 ...

  9. PWA入门:手把手教你制作一个PWA应用

    摘要: PWA图文教程 原文:PWA入门:手把手教你制作一个PWA应用 作者:MudOnTire Fundebug经授权转载,版权归原作者所有. 简介 Web前端的同学是否想过学习app开发,以弥补自 ...

最新文章

  1. 栈和队列在python中的实现
  2. ooalv自定义按钮、单击、双击、列编辑切换的事件用法
  3. view V_IBBINDING
  4. leetcode1437. 是否所有 1 都至少相隔 k 个元素
  5. foreach 循环达到条件的第一次就停止_是否应该停止在JavaScript代码中使用forEach()?...
  6. matlab中函数的公式计算,MATLAB怎样定义函数(入门) 有一函数 f(x,y)=x^2+sinxy+2y , 写一程序, 输入自变量的值,输出函数值....
  7. Linux系统登录相关(命令,应急响应可以用到)
  8. 真正智能的语音识别系统离我们还有多远
  9. linux 坏块,如何在Linux中检查硬盘上的坏扇区或坏块
  10. 架构猿怒了,放大招:详解DoDAF
  11. matlab 电力系统分析 毕设,基于Labview的“电力系统分析”课程仿真:电力系统分析matlab仿真实例...
  12. linux apt 安装命令
  13. 【原创】matlab 2010的下载和安装
  14. 使用SoftEther 上免费校园网(ipv6)
  15. 机器学习案例之_金融反欺诈预测
  16. MySql获取某天是一年的第几周
  17. 软路由:AdGuardHome + OpenWRT 让你家的网络无广告无跟踪
  18. 缅因大学欧洛诺分校计算机科学,缅因大学申请要求高不高?开学时间是什么时候?...
  19. 西班牙计算机专业排名,西班牙大学及专业排名
  20. iOS UITextField自动换行

热门文章

  1. 如何用美剧真正提升你的英语水平
  2. wxpython应用程序_用wxPython创建GUI应用程序展示NASA图片(第一部分)
  3. powershell 结束进程的四种写法
  4. 英语科技论文撰写技巧
  5. RFC8402 Segment Routing Architecture 翻译
  6. Excel的数据透视表怎么弄 ?数据透视表怎么做汇总求和
  7. MATLAB绘制长方体
  8. 敬語使用方法 第三章 他社を訪問する・来客対応(3.7~3.12)
  9. 如何进入大数据领域,学习路线是什么?
  10. 整数规划Python