- ldoc是在lua中很方便的注釋文檔生成工具,比luadoc更強大,並且其邏輯是由lua代碼編寫,方便自己修改和理解源碼
- ldoc依賴luafilesystem和pl庫
- luafilesystem在 https://github.com/keplerproject/luafilesystem,是用c編寫的跨平台的文件操作庫,其源碼可作為c導出到lua的模范來學習,這里需要將其編譯成so
- pl庫在 https://github.com/stevedonovan/Penlight,是用純lua編寫的一系列lua工具庫,有興趣可以學習學習,這里需要將pl目錄放到ldoc同層目錄
- 關於ldoc,luafilesystem,pl都支持通過lua模塊管理工具luarocks快捷安裝,luarocks有點類似nodejs的npm
- 關於文檔如何生成可以參考:http://stevedonovan.github.io/ldoc/,另外該網頁文檔也是通過ldoc生成的
- 在項目中可能需要根據實際項目情況對ldoc源碼進行修改,這里使用ldoc版本為 1.4.3:
- html頁面左邊部分寬度因為實際項目的多層次目錄,模塊名可能很長,需要增加寬度,其css代碼在html/ldoc_css.lua文件中,163行navigation的width和197行content的margin-left值可同時修改為24em,然后去除199行content的width: 700px,這樣整個頁面顯示將更寬闊
- html/ldoc_ltp.lua中部分可加上自定義的標識
- doc.lua在322-324行做了處理,當當前的函數的模塊和文件的模塊名一致時,則重新設置item.name為funcname,然后在后面的346行對此種情況進行特殊處理,解析然后自動加上模塊和間隔符,但這種情況下實際破壞了真實的函數結構,將其統一與模塊名相同的函數全設為" : ",從而在幫助文檔中便不知到底是" : "方法還是" . "方法,所以這里注釋掉這三行代碼
-- ifthat's the mod_name, then we want to only use 'foo' -- if mod == this_mod.mod_name andthis_mod.tags.pragma ~= 'nostrip' then -- item.name = fname --end
- 在builtin/globals.lua設置了在線的lua幫助文檔路徑,這里可以自助下載離線文檔,然后修改路徑,另外5.3發布,如有需求參照5.1和5.2也可加上5.3的manual