Module:Notice
来自Vocawiki
更多操作
模块文档
用于{{Notice}}
local p = {}
function p.main(frame)
local args = frame:getParent().args
local type = args.type or "info"
-- 图标(icon)
local icon = args.icon
local iconClass = ""
if icon and icon ~= "" then
iconClass = " notice-icon-" .. icon
end
-- 列表标题(lt)
local ltHtml = ""
if args.lt and args.lt ~= "" then
ltHtml = '<div class="notice-list-title text-sm">' .. args.lt .. '</div>'
end
-- 列表(list)
local listItems = {}
for i = 1, 50 do
local key = "l" .. i
if args[key] and args[key] ~= "" then
table.insert(listItems, "<li>" .. args[key] .. "</li>")
end
end
local listHtml = ""
if #listItems > 0 then
listHtml = '<ul class="notice-list text-sm">' .. table.concat(listItems, "") .. '</ul>'
elseif args.list and args.list ~= "" then
listHtml = '<ul class="notice-list text-sm">' .. args.list .. '</ul>'
end
-- 详细说明(detail)
local detailHtml = ""
if args.detail and args.detail ~= "" then
detailHtml = '<div class="notice-detail text-sm">' .. args.detail .. '</div>'
end
-- 图片(image)
local image = args.image or ""
local imageSize = args["image-size"] or "120px"
local imageHtml = ""
if image ~= "" then
local fileWikitext = string.format(
'[[File:%s|%s|class=notpageimage|link=]]',
image,
imageSize
)
imageHtml = '<div class="notice-image">' .. fileWikitext .. '</div>'
end
-- 基础模式(text)
local textContent = args.text or args[1]
if textContent and textContent ~= "" then
return string.format([[
<div class="notice notice-%s">
<div class="notice-icon%s" style="-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;"></div>
<div class="notice-text text-base">%s</div>
%s
</div>
]], type, iconClass, textContent, imageHtml)
end
-- 完整输出
return string.format([[
<div class="notice notice-%s">
<div class="notice-icon%s" style="-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;"></div>
<div class="notice-text">
<div class="notice-title text-base">%s</div>
%s%s%s
</div>
%s
</div>
]], type, iconClass, args.title or "", ltHtml, listHtml, detailHtml, imageHtml)
end
return p