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

您所在的位置:网站首页 zeal下载不了文档 手把手教你制作docSet文档(用于Dash或zeal)

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

2023-07-29 01:42| 来源: 网络整理| 查看: 265

        又回编程,最近在研究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 HtmlToDoc def initialize(html_dir, docset_name) @html_path = html_dir @docset_name = "#{docset_name}.docset" @name = docset_name mkdir_file create_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,path end # 提取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.strip if name.size > 0 && tag[:href] path = tag[:href].strip.split("#").last update_db(name,html_path + "#" + path) end end end # 生成目录 def mkdir_file FileUtils.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_plist plist =


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3