lua - 用于文档的元数据。

我读到了Norman Ramsey的评论,关于在Lua中使用元数据生成文档。

我正在尝试从我的库中生成文档,如果可能的话,我不想使用luadoc。

我想了解更多关于使用“元数据导向”方法生成文档的方法、示例或使用的程序。

其他答案也受欢迎,但这是一个问题,可能只有Norman能比其他人回答得更好。

谢谢!

原文链接 https://stackoverflow.com/questions/3100062

点赞
stackoverflow用户41661
stackoverflow用户41661

好的,我想我应该回答这个问题。代码还没有准备好供正式使用,尽管我可能能在2010年7月15日之后使其达到发布状态,也很乐意在此之前共享副本。

有两个想法:

1.每个模块都有一个名为__doc的表。模块中的每个名称都在__doc表中获得一个条目。这是一个例子:

__doc.rfc2822_to_localtime_or_nil = [[function(date)返回数字或nil
将RFC2822日期转换为本地时间(Unix时间)。
]]

第一行是函数的“简短说明”。我希望将来它可以得到动态检查,但现在它只是文档。其余部分是“长说明”。这里有几个例子:

__doc.to_string = [[function(T)返回字符串
将一个消息转换为RFC 2822格式的字符串。]]

__doc.to_orig_string = [[function(T)返回字符串
返回用于创建消息的原始字符串,
可能遵循或不遵循RFC 2822。]]

还有各种特殊字段,如__doc.__overview__doc.T等。

2.有一个命令行工具,它会爬行__doc字段并提供信息。现在这段代码不是非常通用,实现混乱。但这里有一些样本输出:

整个包的概述(注意未记录的项目列表,这对保持诚实至关重要):

%osbf3 internals

文档化模块:
     boot
     cache        -- OSBF-Lua消息缓存
     cfg
     classifier
     command_line
     commands
     core
     filter
     lists
     log
     mime
     mlearn
     msg          -- 解析MIME消息和操作头信息
     options
     output
     roc
     sfid
     util

未记录的函数:
     core.hash
     core.utf8tohtml
     options.env_default

一个模块的简短概述:

:nr @ yorkie 5874; osbf3 internals -short msg

msg:T =消息的表示

msg.add_header = function(T,tag,contents)

msg.del_header = function(T,tag,...)

msg.fingerprint = function(string)返回字符串

msg.has_sfid = function(msg.T)返回bool

msg.header_indices = function(msg,tag,...)返回迭代器

msg.headers_tagged = function(msg,tag,...)返回迭代器

msg.of_string = function(s,uncertain)返回T或nil

msg.sfid = function(msg.T,[msgspec])返回字符串或调用错误

msg.synopsis = function(T,w)返回字符串

msg.to_orig_string = function(T)返回字符串

msg.to_string = function(T)返回字符串

一个函数的文档:

% osbf3 internals msg.synopsis

msg.synopsis = functionTw)返回字符串
返回一个宽度为w(默认为60)的字符串,它是消息T的摘要。
摘要是由主题:行和正文中的前几个单词组成的。

我们的服务器出问题了,但是我有机会的话,我会发布该代码的链接,如果有人想玩玩的话。

2010-06-23 14:48:00