- 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的 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