Lua Doc生成工具
Luadoc
http://keplerproject.github.io/luadoc/
Overview
LuaDoc is a documentation generator tool for Lua source code. It parses the declarations and documentation comments in a set of Lua source files and produces a set of XHTML pages describing the commented declarations and functions.
The output is not limited to XHTML. Other formats can be generated by implementing new
doclets. The format of the documentation comments is also flexible and can be customized by implementing newtaglets. Please refer to customizing section for further information.LuaDoc is free software and uses the same license as Lua.
LDoc
https://github.com/stevedonovan/LDoc
A LuaDoc-compatible documentation generation system http://stevedonovan.github.com/ldoc/
Rationale
This project grew out of the documentation needs of Penlight (and not always getting satisfaction with LuaDoc) and depends on Penlight itself.(This allowed me to not write a lot of code.)
The API documentation of Penlight is an example of a project using plain LuaDoc markup processed using LDoc.
LDoc is intended to be compatible with LuaDoc and thus follows the pattern set by the various *Doc tools:
--- Summary ends with a period.
-- Some description, can be over several lines.
-- @param p1 first parameter
-- @param p2 second parameter
-- @return a string value
-- @see second_fun
function mod1.first_fun(p1,p2)
end
Tags such as
seeandusageare supported, and generally the names of functions and modules can be inferred from the code.LDoc is designed to give better diagnostics: if a
@seereference cannot be found, then the line number of the reference is given. LDoc knows about modules which do not usemodule()
- this is important since this function has become deprecated in Lua 5.2. And you can avoid having to embed HTML in commments by using Markdown.
LDoc will also work with Lua C extension code, and provides some convenient shortcuts.
An example showing the support for named sections and 'classes' is the Winapi documentation; this is generated from winapi.l.c.
LDoc API & Help
http://stevedonovan.github.io/ldoc/manual/doc.md.html#Basic_Usage
LDoc, a Lua Documentation Tool
Introduction
LDoc is a software documentation tool which automatically generates API documentation out of source code comments (doc comments). It is mainly targeted at Lua and documenting Lua APIs, but it can also parse C with according doc comments for documenting Lua modules implemented in C.
It is mostly compatible with LuaDoc, except that certain workarounds are no longer needed. For instance, it is not so married to the idea that Lua modules should be defined using the
modulefunction; this is not only a matter of taste since this has been deprecated in Lua 5.2.Otherwise, the output is very similar, which is no accident since the HTML templates are based directly on LuaDoc. You can ship your own customized templates and style sheets with your own project (also see Graham Hannington’s documentation for Lua for z/OS). LDoc comes with three extra themes; ‘pale’ for those who like whitespace, ‘one’ for one-column output, and ‘fixed’ for a fixed navigation bar down the left side.
You have an option to use Markdown to process the documentation, which means no ugly HTML is needed in doc comments. C/C++ extension modules may be documented in a similar way, although function names cannot be inferred from the code itself.
LDoc can provide integrated documentation, with traditional function comments, any documents in Markdown format, and specified source examples. Lua source in examples and the documents will be prettified.
Although there are a fair number of command-line options, the preferred route is to write a
config.ldconfiguration file in Lua format. By convention, if LDoc is simply invoked asldoc .it will read this file first. In this way, the aim is to make it very easy for end-users to build your documentation using this simple command.
------------
Here are all the tags known to LDoc:
- @module A Lua module containing functions and tables, which may be inside sections
- @classmod Like @module but describing a class
- @submodule A file containing definitions that you wish to put into the named master module
- @script A Lua program
- @author (multiple), copyright, @license, @release only used for project-level tags like @module
- @function, @lfunction. Functions inside a module
- @param formal arguments of a function (multiple)
- @return returned values of a function (multiple)
- @raise unhandled error thrown by this function
- @local explicitly marks a function as not being exported (unless
--all)- @see reference other documented items
- @usage give an example of a function’s use. (Has a somewhat different meaning when used with @module)
- @table a Lua table
- @field a named member of a table
- @section starting a named section for grouping functions or tables together
- @type a section which describes a class
- @within puts the function or table into an implicit section
- @fixme, @todo and @warning are annotations, which are doc comments that occur inside a function body.
http://stevedonovan.github.io/ldoc/manual/doc.md.html#Basic_Usage
Fields allowed in
config.ldSame meaning as the corresponding parameters:
filea file or directory containing sources. Inconfig.ldthis can also be a table of files and directories.projectname of project, used as title in top lefttitlepage title, default ‘Reference’packageexplicit base package name; also used for resolving references in documentsallshow local functions, etc as well in the docsformatmarkup processor, can be ‘plain’ (default), ‘markdown’ or ‘discount’outputoutput name (default ‘index’)dirdirectory for output files (default ‘doc’)colonuse colon style, instead of @ tag styleboilerplateignore first comment in all source files (e.g. license comments)extextension for output (default ‘html’)oneuse a one-column layoutstyle,template: together these specify the directories for the style and and the template. Inconfig.ldthey may also betrue, meaning use the same directory as the configuration file.mergeallow documentation from different files to be merged into modules without explicit @submodule tag_These only appear in the configuration file:_
descriptiona short project description used under the project titlefull_descriptionwhen you really need a longer project descriptionexamplesa directory or file: can be a tablereadmeortopicsreadme files (to be processed with Markdown)prettycode prettify ‘lua’ (default) or ‘lxsh’prettify_filesprettify the source as well and make links to it; if its value is “show” then also index the source files.charsetuse if you want to override the UTF-8 default (also @charset in files)sortset if you want all items in alphabetical orderno_return_or_parmsdon’t show parameters or return values in outputno_lua_refstop obsessively trying to create references to standard Lua librariesbacktick_referenceswhether references in backticks will be resolved. Happens by default when using Markdown. When explicit will expand non-references in backticks into<code>elementsplainset to true ifformatis set but you don’t want code comments processedwrapset to true if you want to allow long names to wrap in the summariesmanual_urlpoint to an alternative or local location for the Lua manual, e.g. ‘file:///D:/dev/lua/projects/lua-5.1.4/doc/manual.html’no_summarysuppress the Contents summarycustom_tagsdefine some new tags, which will be presented after the function description. The format is{<name>,[title=<name>,}{hidden=false,}{format=nil}}. For instancecustom_tags={'remark',title='Remarks'}will add a littleRemarkssection to the docs for any function containing this tag.formatcan be a function – if not present the default formatter will be used, e.g. Markdowncustom_see_handlerfunction that filters see-referencescustom_display_name_handlerfunction that formats an item’s name. The arguments are the item and the default function used to format the name. For example, to show an icon or label beside any function tagged with a certain tag:
LDoc demo
http://stevedonovan.github.io/ldoc/examples/mylib.c.html
/// A sample C extension.
// Demonstrates using ldoc's C/C++ support. Can either use /// or /*** */ etc.
// @module mylib
#include <string.h>
#include <math.h> // includes for Lua
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h> /***
Create a table with given array and hash slots.
@function createtable
@param narr initial array slots, default 0
@param nrec initial hash slots, default 0
*/
static int l_createtable (lua_State *L) {
int narr = luaL_optint(L,1,0);
int nrec = luaL_optint(L,2,0);
lua_createtable(L,narr,nrec);
return 1;
}
-------------
------
-- Various ways of indicating errors
-- @module multiple -----
-- function with return groups.
-- @treturn[1] string result
-- @return[2] nil
-- @return[2] error message
function mul1 () end
LDoc 依赖 PenLight 库
https://github.com/stevedonovan/Penlight
Penlight brings together a set of generally useful pure Lua modules, focusing on input data handling (such as reading configuration files), functional programming (such as map, reduce, placeholder expressions, etc), and OS path management. Much of the functionality is inspired by the Python standard libraries.
Paths, Files and Directories
path: queries likeisdir,isfile,exists, splitting paths likedirnameandbasenamedir: listing files in directories (getfiles,getallfiles) and creating/removing directory pathsfile:copy,move; read/write contents withreadandwriteApplication Support
app:require_hereto rebaserequireto work with main script path; simple argument parsingparse_argslapp: sophisticated usage-text-driven argument parsing for applicationsconfig: flexibly read Unix config files and Windows INI filesstrict: check for undefined global variables - can usestrict.modulefor modulesutils,compat: Penlight support for unified Lua 5.1/5.2 codebasestypes: predicates likeis_callableandis_integer; extendedtypefunction.Extra String Operations
utils: can split a string with a delimiter usingutils.splitstringx: extended string functions covering the Pythonstringtypestringio: open strings for reading, and creating strings using standard Lua IO methodslexer: lexical scanner for splitting text into tokens; special cases for Lua and Ctext: indenting and dedenting text, wrapping paragraphs; optionally make%work as in Pythontemplate: small but powerful template expansion enginesip: Simple Input Patterns - higher-level string patterns for parsing textExtra Table Operations
tablex: copying, comparing and mapping overpretty: pretty-printing Lua tables, and various safe ways to load Lua as dataList: implementation of Python 'list' type - slices, concatenation and partitioningMap,Set,OrderedMap: classes for specialized kinds of tablesdata: reading tabular data into 2D arrays and efficient queriesarray2d: operations on 2D arrayspermute: generate permutationsIterators, OOP and Functional
seq: working with iterator pipelines; collecting iterators as tablesclass: a simple reusable class frameworkfunc: symbolic manipulation of expressions and lambda expressionsutils:utils.string_lambdaconverts short strings like '|x| x^2' into functionscomprehension: list comprehensions:C'x for x=1,4'()=={1,2,3,4}
参考BLOG
http://blog.justbilt.com/2015/08/23/ldoc/
http://www.dpull.com/blog/2016-02-03-ldoc
其它
http://www.cs.scranton.edu/~doc/cppdoc/
CDOC没有找到。
https://en.wikipedia.org/wiki/Comparison_of_documentation_generators
http://jessevdk.github.io/cldoc/
Lua Doc生成工具的更多相关文章
- 【Lua】LDoc生成Lua文档工具的使用
参考资料: http://my.oschina.net/wangxuanyihaha/blog/188909 LDoc介绍: LDoc是一个Lua的文档生成工具,过去,比较常用的Lua生成 ...
- 数据字典生成工具之旅(5):DocX组件读取与写入Word
由于上周工作比较繁忙,所以这篇文章等了这么久才写(预告一下,下一个章节正式进入NVelocity篇,到时会讲解怎么使用NVelocity做一款简易的代码生成器,敬请期待!),好了正式进入本篇内容. 这 ...
- 赞!jsPDF – 基于 HTML5 的强大 PDF 生成工具
jsPDF 是一个基于 HTML5 的客户端解决方案,用于生成各种用途的 PDF 文档.使用方法很简单,只要引入 jsPDF 库,然后调用内置的方法就可以了.浏览器兼容性: IE 10, Firefo ...
- JS文档和Demo自动化生成工具 - SmartDoc发布
曾几何时,当你码神附体,一路披荆斩棘的完成代码后,带着“一码在手,天下我有”的傲然环顾之时,却发现单元测试.API文档.Demo实例陆续向你砸来,顿时有木有一种冰水挑战后的感觉.而这时你应该:哟哟,快 ...
- 使用Objective-C的文档生成工具:appledoc
使用Objective-C的文档生成工具:appledoc 前言 做项目的人多了,就需要文档了.今天开始尝试写一些项目文档.但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.象 Ja ...
- Lua内存分析工具
最近给公司写了一个lua内存分析工具,可以非常方便的分析出Lua内存泄露问题,有图形化界面操作,方便手机端上传快照等功能 内存分析我是在c语言端写的,也有人写过lua端的分析工具,也蛮好用的,不过lu ...
- Markdown 文档生成工具
之前用了很多Markdown 文档生成工具,发现有几个挺好用的,现在整理出来,方便大家快速学习. loppo: 非常简单的静态站点生成器 idoc:简单的文档生成工具 gitbook:大名鼎鼎的文档协 ...
- python文档生成工具:pydoc、sphinx;django如何使用sphinx?
文档生成工具: 自带的pydoc,比较差 建议使用sphinx 安装: pip install sphinx 安装主题: 由各种主题,我选择常用的sphinx_rtd_theme pip instal ...
- H5类似易企秀/编辑器/页面制作/开发/生成工具/软件/源码/授权
代码地址如下:http://www.demodashi.com/demo/14960.html 项目简介 H5DS (HTML5 Design software) 这是一款基于WEB的 H5制作工具. ...
随机推荐
- python服务器文件上传下载+GUI【tkinter】
大概就是一个通过应用程序来和服务器打交道的这么一个,小东西 1.GUI 用的是tkinter # -*- coding: UTF-8 -*- from tkinter import * import ...
- [BJWC2018]Border 的四种求法(后缀自动机+链分治+线段树合并)
题目描述 给一个小写字母字符串 S ,q 次询问每次给出 l,r ,求 s[l..r] 的 Border . Border: 对于给定的串 s ,最大的 i 使得 s[1..i] = s[|s|-i+ ...
- NOIP2017题解
T1小凯的疑惑 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中, ...
- zabbix3.2添加web页面监控(Web monitoring)
应用场景: 存在一种情况:nginx或者httpd服务本身运行正常,但是网页挂了,类似于网页被黑,或者40X之类的... 可以用zabbix把web页面访问也监控起来,第一时间得知web崩溃信息并做相 ...
- thinkphp5中__PUBLIC__的使用
在使用thinkphp5.1开发的时候遇到设置__PUBLIC__无法生效的问题.这次的版本升级有比较大的改动,很多写法已经被更改,下面说下怎么去解决这个问题. 工具/原料 phpstorm ln ...
- uoj#80 二分图最大权匹配
题意:给定二分图,有边权,求最大边权匹配.边权非负. 解:KM算法求解最大权完备匹配. 完备匹配就是点数少的那一边每个点都有匹配. 为了让完备匹配与最大权匹配等价,我们添加若干条0边使之成为完全二分图 ...
- C++11并发——多线程条件变量std::condition_variable(四)
https://www.jianshu.com/p/a31d4fb5594f https://blog.csdn.net/y396397735/article/details/81272752 htt ...
- react-native中使用长列表
React Native 提供了几个适用于展示长列表数据的组件,一般而言我们会选用FlatList或是SectionList. FlatList组件用于显示一个垂直的滚动列表,其中的元素之间结构近似而 ...
- 第四篇-以ConstraintLayout进行Android界面设计
此文章基于第三篇. 一.新建一个layout.xml文件,创建方法不再赘述,在Design界面右击LinearLayout,点击Convert LinearLayout to ConstraintLa ...
- JAVA 微信支付 native方式
最近做了一个微信native方式支付的demo,整理一下. 首先到微信公众号官网阅读开发文档,虽然文档对于java没有例子,但是也可以作参考.https://pay.weixin.qq.com/wik ...