forked from izaya/OC-PsychOS2
added a component documentation searcher
This commit is contained in:
parent
3f82d96b8e
commit
8bb123f198
26
lib/doc.lua
26
lib/doc.lua
@ -4,6 +4,7 @@ doc.searchers = {}
|
||||
doc.tctab = {
|
||||
["string"] = 31,
|
||||
["table"] = 32,
|
||||
["userdata"] = 32,
|
||||
["number"] = 33,
|
||||
["boolean"] = 35,
|
||||
["function"] = 36
|
||||
@ -111,6 +112,31 @@ function doc.searchers.cdoc(topic) -- string -- string string -- Searches for do
|
||||
end
|
||||
end
|
||||
end
|
||||
function doc.searchers.component(name)
|
||||
local dt = {}
|
||||
local addr = component.list(name)()
|
||||
if addr then
|
||||
for fname,_ in pairs(component.methods(addr)) do
|
||||
fd = {args={},outtypes={},atypes={}}
|
||||
local ds = component.doc(addr,fname)
|
||||
local ins, outs, desc = ds:match("%((.-)%)") or "", ds:match("%):(.*)%-%-") or "", ds:match("%-%-(.+)") or ""
|
||||
for arg in ins:gmatch("[^,%s%[%]]+") do
|
||||
local an,at = arg:match("(.-):(.+)")
|
||||
at = at:match("(.-)=") or at
|
||||
fd.args[#fd.args+1] = {an,at}
|
||||
fd.atypes[an] = at
|
||||
end
|
||||
for out in outs:gmatch("[^,]+") do
|
||||
fd.outtypes[#fd.outtypes+1] = out:match("^%s*(.-)%s*$")
|
||||
end
|
||||
fd.description = desc or ""
|
||||
dt[name.."."..fname] = fd
|
||||
end
|
||||
else
|
||||
return
|
||||
end
|
||||
return doc.format(dt)
|
||||
end
|
||||
|
||||
function doc.docs(topic) -- string -- boolean -- Displays the documentation for *topic*, returning true, or errors. Also callable as just doc().
|
||||
local lib = os.getenv("LIB") or "/boot/lib"
|
||||
|
Loading…
Reference in New Issue
Block a user