issue #64: use 'sort=true' in config.ld to sort items in sections
This commit is contained in:
parent
eb00a499b2
commit
8a071fb517
2
ldoc.lua
2
ldoc.lua
|
@ -186,7 +186,7 @@ local ldoc_contents = {
|
||||||
'alias','add_language_extension','new_type','add_section', 'tparam_alias',
|
'alias','add_language_extension','new_type','add_section', 'tparam_alias',
|
||||||
'file','project','title','package','format','output','dir','ext', 'topics',
|
'file','project','title','package','format','output','dir','ext', 'topics',
|
||||||
'one','style','template','description','examples', 'pretty', 'charset', 'plain',
|
'one','style','template','description','examples', 'pretty', 'charset', 'plain',
|
||||||
'readme','all','manual_url', 'ignore', 'colon',
|
'readme','all','manual_url', 'ignore', 'colon', 'sort',
|
||||||
'boilerplate','merge', 'wrap', 'not_luadoc',
|
'boilerplate','merge', 'wrap', 'not_luadoc',
|
||||||
'no_return_or_parms','no_summary','full_description','backtick_references', 'custom_see_handler',
|
'no_return_or_parms','no_summary','full_description','backtick_references', 'custom_see_handler',
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,10 +58,21 @@ function html.generate_output(ldoc, args, project)
|
||||||
local check_directory, check_file, writefile = tools.check_directory, tools.check_file, tools.writefile
|
local check_directory, check_file, writefile = tools.check_directory, tools.check_file, tools.writefile
|
||||||
local original_ldoc
|
local original_ldoc
|
||||||
|
|
||||||
local function save_ldoc ()
|
local function save_and_set_ldoc (set)
|
||||||
|
if not set then return end
|
||||||
if not original_ldoc then
|
if not original_ldoc then
|
||||||
original_ldoc = tablex.copy(ldoc)
|
original_ldoc = tablex.copy(ldoc)
|
||||||
end
|
end
|
||||||
|
for s in set:iter() do
|
||||||
|
local var,val = s:match('([^=]+)=(.+)')
|
||||||
|
local num = tonumber(val)
|
||||||
|
if num then val = num
|
||||||
|
elseif val == 'true' then val = true
|
||||||
|
elseif val == 'false' then val = false
|
||||||
|
end
|
||||||
|
print('setting',var,val)
|
||||||
|
ldoc[var] = val
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function restore_ldoc ()
|
local function restore_ldoc ()
|
||||||
|
@ -210,6 +221,8 @@ function html.generate_output(ldoc, args, project)
|
||||||
ldoc.root = true
|
ldoc.root = true
|
||||||
if ldoc.module then
|
if ldoc.module then
|
||||||
ldoc.module.info = get_module_info(ldoc.module)
|
ldoc.module.info = get_module_info(ldoc.module)
|
||||||
|
ldoc.module.ldoc = ldoc
|
||||||
|
save_and_set_ldoc(ldoc.module.tags.set)
|
||||||
end
|
end
|
||||||
set_charset(ldoc)
|
set_charset(ldoc)
|
||||||
local out,err = template.substitute(module_template,{
|
local out,err = template.substitute(module_template,{
|
||||||
|
@ -218,6 +231,7 @@ function html.generate_output(ldoc, args, project)
|
||||||
})
|
})
|
||||||
ldoc.root = false
|
ldoc.root = false
|
||||||
if not out then quit("template failed: "..err) end
|
if not out then quit("template failed: "..err) end
|
||||||
|
restore_ldoc()
|
||||||
|
|
||||||
check_directory(args.dir) -- make sure output directory is ok
|
check_directory(args.dir) -- make sure output directory is ok
|
||||||
|
|
||||||
|
@ -250,13 +264,9 @@ function html.generate_output(ldoc, args, project)
|
||||||
for m in modules() do
|
for m in modules() do
|
||||||
ldoc.module = m
|
ldoc.module = m
|
||||||
ldoc.body = m.body
|
ldoc.body = m.body
|
||||||
|
m.ldoc = ldoc
|
||||||
if m.tags.set then
|
if m.tags.set then
|
||||||
save_ldoc()
|
save_and_set_ldoc(m.tags.set)
|
||||||
for s in m.tags.set:iter() do
|
|
||||||
local var,val = s:match('([^=]+)=(.+)')
|
|
||||||
print('setting',var,val)
|
|
||||||
ldoc[var] = val
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
set_charset(ldoc)
|
set_charset(ldoc)
|
||||||
m.info = get_module_info(m)
|
m.info = get_module_info(m)
|
||||||
|
|
|
@ -22,15 +22,26 @@ local lfs = require 'lfs'
|
||||||
-- (something rather similar exists in LuaDoc)
|
-- (something rather similar exists in LuaDoc)
|
||||||
function M.type_iterator (list,field,value)
|
function M.type_iterator (list,field,value)
|
||||||
return function()
|
return function()
|
||||||
local i = 1
|
local i, fls = 1, {}
|
||||||
return function()
|
for j = 1,#list do
|
||||||
local val = list[i]
|
local val = list[j]
|
||||||
while val and val[field] ~= value do
|
if val[field] == value then
|
||||||
|
fls[i] = val
|
||||||
i = i + 1
|
i = i + 1
|
||||||
val = list[i]
|
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
i = 0
|
||||||
|
local mod = fls[1].module
|
||||||
|
local ldoc = mod and mod.ldoc
|
||||||
|
if ldoc and ldoc.sort then
|
||||||
|
table.sort(fls,function(ia,ib)
|
||||||
|
return ia.name < ib.name
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
return function()
|
||||||
i = i + 1
|
i = i + 1
|
||||||
if val then return val end
|
local val = fls[i]
|
||||||
|
if val ~= nil then return val end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue