모듈:reference section/debug
이 모듈에 대한 설명문서는 모듈:reference section/debug/설명문서에서 만들 수 있습니다
local export = {}
local function resolve_alias(key, params)
-- alias_of와 other_aliases를 순차적으로 확인하여 실제 키를 반환
if params[key] and params[key].alias_of then
return resolve_alias(params[key].alias_of, params)
end
return key
end
local function validate_params(args, params)
local debug_info = ""
-- args 테이블의 디버그 정보를 생성
for k, v in pairs(args) do
debug_info = debug_info .. k .. ": " .. tostring(v) .. "<br>"
end
-- 필수 필드를 체크하고 타입 검사를 수행
for k, v in pairs(params) do
local resolved_key = resolve_alias(k, params)
-- required 플래그가 있는 경우에 대해서도 확인
if v.required and (args[resolved_key] == nil or type(args[resolved_key]) ~= "string") then
return "Error: " .. resolved_key .. " must be provided and must be a string<br>" .. debug_info
end
-- 필드가 존재하고 타입이 맞는지 확인
if args[resolved_key] ~= nil and type(args[resolved_key]) ~= "string" then
return "Error: " .. resolved_key .. " must be a string<br>" .. debug_info
end
-- other_aliases 필드를 확인
if v.other_aliases then
if type(v.other_aliases) == "string" then
local resolved_alias = resolve_alias(alias, params)
if args[resolved_alias] ~= nil and type(args[resolved_alias]) ~= "string" then
return "Error: " .. resolved_alias .. " must be a string<br>" .. debug_info
end
else
for _, alias in ipairs(v.other_aliases) do
local resolved_alias = resolve_alias(alias, params)
if args[resolved_alias] ~= nil and type(args[resolved_alias]) ~= "string" then
return "Error: " .. resolved_alias .. " must be a string<br>" .. debug_info
end
end
end
end
end
return debug_info
end
function export.process_debug(args, params)
return validate_params(args, params)
end
return export