Files
eepp/docs/doxyrest/frame/cmake/utils.lua
2022-03-11 11:51:07 -03:00

179 lines
4.6 KiB
Lua

--------------------------------------------------------------------------------
--
-- This file is part of the Doxyrest toolkit.
--
-- Doxyrest is distributed under the MIT license.
-- For details see accompanying license.txt file,
-- the public copy of which is also available at:
-- http://tibbo.com/downloads/archive/doxyrest/license.txt
--
--------------------------------------------------------------------------------
g_cmakeUtilsIncluded = true
dofile(g_frameDir .. "/../common/string.lua")
dofile(g_frameDir .. "/../common/table.lua")
dofile(g_frameDir .. "/../common/item.lua")
dofile(g_frameDir .. "/../common/doc.lua")
dofile(g_frameDir .. "/../common/toc.lua")
LANGUAGE = "cmake"
if not INDEX_TITLE then
INDEX_TITLE = "My Project Documentation"
end
if not EXTRA_PAGE_LIST then
EXTRA_PAGE_LIST = {}
end
if not EXTERNAL_CREF_DB then
EXTERNAL_CREF_DB = {}
end
if PRE_PARAM_LIST_SPACE then
g_preParamSpace = " "
else
g_preParamSpace = ""
end
if not g_globalNamespace.title then
g_globalNamespace.title = "Global Scope"
end
-------------------------------------------------------------------------------
-- formatting of function declarations
function getParamName(param)
if param.declarationName ~= "" then
return param.declarationName
elseif param.definitionName ~= "" then
return param.definitionName
else
return param.type.plainText
end
end
function getParamArrayString_sl(paramArray)
local s = ""
local count = #paramArray
if count > 0 then
s = " " .. getParamName(paramArray[1])
for i = 2, count do
s = s .. " " .. getParamName(paramArray[i])
end
end
return s .. ")"
end
function getParamArrayString_ml(paramArray, indent)
if not indent then
indent = ""
end
local s = ""
local nl = "\n" .. indent .. "\t"
local count = #paramArray
if count > 0 then
s = nl .. getParamName(paramArray[1])
for i = 2, count do
s = s .. nl .. getParamName(paramArray[i])
end
end
return s .. nl .. ")"
end
function getFunctionDeclString(func, nameTemplate, indent)
local functionKind
if func.memberKind == "define" then
functionKind = "macro"
else
functionKind = "function"
end
local s = functionKind .. g_preParamSpace .. "("
local name = fillItemNameTemplate(nameTemplate, func.name, func.id)
local paramString
if ML_PARAM_LIST_COUNT_THRESHOLD and
#func.paramArray > ML_PARAM_LIST_COUNT_THRESHOLD then
s = s .. "\n" .. indent
paramString = getParamArrayString_ml(func.paramArray, indent)
else
paramString = getParamArrayString_sl(func.paramArray)
if ML_PARAM_LIST_LENGTH_THRESHOLD then
local decl = functionKind .. g_preParamSpace .. func.name .. paramString
decl = replaceRolesWithPlainText(decl)
if string.len(decl) > ML_PARAM_LIST_LENGTH_THRESHOLD then
s = s .. "\n" .. indent
paramString = getParamArrayString_ml(func.paramArray, indent)
end
end
end
return s .. name .. paramString
end
-------------------------------------------------------------------------------
-- compound prep
function itemLocationFilter(item)
return not (item.location and string.match(item.location.file, EXCLUDE_LOCATION_PATTERN))
end
function prepareCompound(compound)
if compound.stats then
return compound.stats
end
local stats = {}
if EXCLUDE_LOCATION_PATTERN then
filterArray(compound.variableArray, itemLocationFilter)
filterArray(compound.functionArray, itemLocationFilter)
filterArray(compound.defineArray, itemLocationFilter)
end
stats.hasItems =
#compound.variableArray ~= 0 or
#compound.functionArray ~= 0 or
#compound.defineArray ~= 0
stats.hasBriefDocumentation = not isDocumentationEmpty(compound.briefDescription)
stats.hasDetailedDocumentation = not isDocumentationEmpty(compound.detailedDescription)
stats.hasDocumentedVariables = prepareItemArrayDocumentation(compound.variableArray, compound)
stats.hasDocumentedFunctions = prepareItemArrayDocumentation(compound.functionArray, compound)
stats.hasDocumentedDefines = prepareItemArrayDocumentation(compound.defineArray, compound)
stats.hasDocumentedItems = stats.hasDocumentedVariables or stats.hasDocumentedFunctions
if EXCLUDE_UNDOCUMENTED_ITEMS then
filterArray(compound.variableArray, hasItemDocumentation)
filterArray(compound.functionArray, hasItemDocumentation)
filterArray(compound.defineArray, hasItemDocumentation)
end
table.sort(compound.groupArray, cmpGroups)
if SORT_GLOBAL_MEMBERS then
table.sort(compound.variableArray, cmpNames)
table.sort(compound.functionArray, cmpNames)
table.sort(compound.defineArray, cmpNames)
end
compound.stats = stats
return stats
end
-------------------------------------------------------------------------------