|
本帖最后由 casea 于 2022-8-12 14:43 编辑
最近在学pyrosetta,跟随谷雨老师的教程时,发现老师自己制作了pyrosetta的离线api查询文档,通过dash程序可以很方便的查找关键字。
举一反三,cp2k的关键词很多,而且日常访问网页查询时可能会出现网络波动。那么是否可以自行构建docset文档结合dash使用呢?
在查询资料之后,Dash程序只适用于Macos,Zeal支持windows和linux(Zeal是借鉴了Dash编写的)。软件安装很简单查看官网即可(提供的网盘文件中提供了解压即用的Zeal程序包)
目前,Zeal内置了很多官方api文档。但是很多程序的离线api文档需要自己制作。在此,提供制作流程,于此同时网盘文件中提供了对应的已经制作好的cp2k.docset文件,只需将其放入zeal程序文件夹中的docset文件夹即可。
效果图:
制作流程: 使用centos8系统生成,仅供参考,可以直接使用网盘的资料
1. mkdir docset
2. cd docset
3. wget -m https://manual.cp2k.org/cp2k-2022_1-branch/index.html***2022/08/12更新***
在@highlight 的指点下,也可以采用如下方法生成html文件
这是官方给的说明https://manual.cp2k.org/cp2k-9_1-branch/generate_manual_howto.html
假设你有编译好的 cp2k.psmp,执行 cp2k.psmp --xml 得到 cp2k_input.xml
yum install java saxon
在 xml2html 里修改 export SAXON=/usr/share/java/saxon.jar
执行 ./xml2htm
4. mkdir -p cp2k.docset
5. mkdir -p cp2k.docset/Contents/Resources/Documents
6. mv manual.cp2k.org/cp2k-2022_1-branch/* cp2k.docset/Contents/Resources/Documents/
7. vi cp2k.docset/Contents/Info.plist- <?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>CP2K</string>
- <key>CFBundleName</key>
- <string>CP2K</string>
- <key>DocSetPlatformFamily</key>
- <string>CP2K</string>
- <key>isDashDocset</key>
- <true/>
- </dict>
- </plist>
复制代码
8. > sqlite3 cp2k.docset/Contents/Resources/docSet.dsidx
> CREATE TABLE searchIndex(id INTEGER PRIMARY KEY, name TEXT, type TEXT, path TEXT);
> .exit
9. python docset.py
- # docset.py
- #!/usr/local/bin/python
- import os, re, sqlite3
- from bs4 import BeautifulSoup, NavigableString, Tag
- conn = sqlite3.connect('/home/casea/CASEADATA/docset/cp2k.docset/Contents/Resources/docSet.dsidx')
- cur = conn.cursor()
- try: cur.execute('DROP TABLE searchIndex;')
- except: pass
- cur.execute('CREATE TABLE searchIndex(id INTEGER PRIMARY KEY, name TEXT, type TEXT, path TEXT);')
- cur.execute('CREATE UNIQUE INDEX anchor ON searchIndex (name, type, path);')
- docpath = '/home/casea/CASEADATA/docset/cp2k.docset/Contents/Resources/Documents'
- page = open(os.path.join(docpath,'index.html')).read()
- soup = BeautifulSoup(page)
- any = re.compile('.*')
- for tag in soup.find_all('a', {'href':any}):
- name = tag.text.strip()
- if len(name) > 1:
- path = tag.attrs['href'].strip()
- if path != 'index.html':
- cur.execute('INSERT OR IGNORE INTO searchIndex(name, type, path) VALUES (?,?,?)', (name, 'func', path))
- print('name: %s, path: %s' % (name, path))
- conn.commit()
- conn.close()
复制代码 10. cp cp2k.docset/Contents/Resources/Documents/favicon.png cp2k.docset/icon@2x.png
11. 在修改favicon.png的像素尺寸为16x16,并保存为icon.png
12. 将生成的cp2k.docset复制到zeal程序文件夹中得docset文件夹下。
|
评分 Rate
-
查看全部评分 View all ratings
|