模块:Iconbar
来自RIA | Wiki
更多操作
此模板改编自Minecraft中文维基,原页面为mcwiki:模块:Iconbar。
local p = {}
function p.bar(frame)
local args = frame.args or {}
local full = args.full
local half = args.half or 'Half ' .. full
local empty = args.empty or 'Empty ' .. full
local value = math.abs(tonumber(args.value) or 0) / 2
local min = math.ceil(math.abs(tonumber(args.min) or 0) / 2)
local sizeValue = args.size or ''
local title = args.title or ''
local reverse = args.reverse or ''
-- 调试信息
local debugInfo = {
"调试信息:",
"full: " .. tostring(full),
"sizeValue: " .. tostring(sizeValue),
"value: " .. tostring(value)
}
if not full then
return '错误:缺少必需的full参数'
end
if title:lower() == 'none' then
title = ''
elseif title ~= '' then
title = ' title="' .. title .. '"'
else
title = ' title="' .. value .. '"'
end
local fullIcon = ''
local halfIcon = ''
local emptyIcon = ''
-- 处理尺寸参数
local sizeParam = ''
if sizeValue ~= '' then
if tonumber(sizeValue) then
sizeParam = '|' .. sizeValue .. 'px'
table.insert(debugInfo, "sizeParam(数字): " .. sizeParam)
else
sizeParam = '|' .. sizeValue
table.insert(debugInfo, "sizeParam(单位): " .. sizeParam)
end
else
table.insert(debugInfo, "sizeParam: (空)")
end
-- 生成图标
if value == 0 then
emptyIcon = '[[File:' .. empty .. sizeParam .. ']]'
table.insert(debugInfo, "emptyIcon: " .. emptyIcon)
else
local fullCount = math.floor(value)
if fullCount > 0 then
fullIcon = string.rep('[[File:' .. full .. sizeParam .. ']]', fullCount)
table.insert(debugInfo, "fullIcon: " .. fullIcon)
end
if math.floor(value) ~= value then
halfIcon = '[[File:' .. half .. sizeParam .. ']]'
table.insert(debugInfo, "halfIcon: " .. halfIcon)
end
end
-- 生成空图标
local emptyCount = min - math.ceil(value)
if emptyCount > 0 then
emptyIcon = string.rep('[[File:' .. empty .. sizeParam .. ']]', emptyCount)
table.insert(debugInfo, "emptyIcon(填充): " .. emptyIcon)
end
local result
if reverse ~= '' then
result = emptyIcon .. halfIcon .. fullIcon
else
result = fullIcon .. halfIcon .. emptyIcon
end
-- 返回调试信息 + 结果
return table.concat(debugInfo, "<br>") .. "<br>结果:" .. result
end
return p