可在模块:信息框/doc创建此模块的帮助文档
local p = {}
local b = require("Module:Basic")
function p.core(data)
local html = mw.html.create()
mw.log("data")
mw.logObject(data)
local tableElem = html:tag('table')
:addClass(data.class or 'infobox')
:css('align', data.align or 'right')
:css('display', 'table')
:css('font-size', '89%')
:css('text-align', data.textalign or 'center')
:css('max-width', data.maxwidth or '100%')
:css('float', data.float or 'right')
:css('background-color', b.empty(data.bgcolor) or '')
if b.empty(data["image"]) then
local row = tableElem:tag('tr')
local wikitext = ""
if not (mw.ustring.find(data["image"], "[[", 1, true) or mw.ustring.find(data["image"], "{{", 1, true)) then
wikitext = "[[file:" .. data["image"] .. "|" .. (b.empty(data["图片大小"]) or '250px') .. "]]"
else
wikitext = data["image"]
end
if b.empty(data["图片信息"]) then
wikitext = wikitext .. "<br>" .. data["图片信息"]
end
row:tag('td'):attr("colspan", 2):wikitext(wikitext)
end
for i, row_data in ipairs(data) do
if row_data[2] ~= "" and row_data[2] ~= nil and type(row_data[1]) ~= "number" then
local row = tableElem:tag('tr')
row:tag('td'):wikitext(row_data[1]):css('min-width', '80px'):css('color',
b.empty(data.lefttextcolor) or '#FFFFFF'):css('background-color',
b.empty(data.leftcolumncolor) or '#0050AD')
row:tag('td'):wikitext("<span>" .. b.trim(row_data[2]) .. "</span>")
end
end
local result = tostring(html) .. "<templatestyles src=\"模板:infobox/style.css\" />"
return result
end
--
function p.au(frame)
local result = frame:preprocess(tostring(p.parser(frame.args,
{ "名称", "原名", "常用译名", "人物", "创始者", "现持有者", "参与制作者", "日期", "发布日期", "主页", "背景", "风格", "类型", "状态" },
{ "名称", "人物", "主页", "背景", "风格", "类型", "状态" }, "au")))
return result
end
--
function p.location(frame)
local result = frame:preprocess(tostring(p.parser(frame.args, { "名称", "坐落于", "居民", "包含地区", "背景音乐" },
{ "名称", "坐落于", "居民", "包含地区", "背景音乐" }, "location")))
return result
end
function p.music(frame)
local result = frame:preprocess(tostring(p.parser(frame.args, { "名称", "原名", "常用译名", "音乐集编号", "时长", "主旋律", "人物", "制作者", "文件名", "播放处", "BPM", "调号", "拍号", "曲目格式", "音乐风格", "状态", "发行时间", "所属", "相关角色"},
{ "名称", "音乐集编号", "时长", "主旋律", "人物", "文件名", "播放处", "BPM", "调号", "拍号", "曲目格式", "音乐风格", "状态", "所属", "相关角色"}, "music")))
return result
end
function p.game(frame)
local result = frame:preprocess(tostring(p.parser(frame.args, { "名称", "原名", "常用译名", "人物", "制作者", "开发", "发布", "总监", "制作", "设计", "程序", "美工", "编剧", "音乐", "系列", "引擎", "平台", "主页", "所属", "状态", "发行时间", "类型", "模式"},
{ "名称", "人物", "系列", "引擎", "平台", "主页", "所属", "状态", "类型", "模式"}, "game")))
return result
end
function p.battle(frame)
local result = frame:preprocess(tostring(p.parser(frame.args, { "播放音乐", "HP", "ATK", "DEF", "击杀获得的EXP", "胜利获得的G", "可执行的行动", "击杀获得的EXP" },
{ "播放音乐", "HP", "ATK", "DEF", "击杀获得的EXP", "胜利获得的G", "可执行的行动", "击杀获得的EXP" }, "battle")))
return result
end
--
function p.parser(args, be_data_list, classic_be_data_list, classify)
local temp_time = ""
temp_time = temp_time .. (args["发布日期"] or "")
temp_time = temp_time .. (args["日期"] or "")
local data = {}
local data_list = {}
local o_args = mw.clone(args)
for key, value in pairs(o_args) do
args[key] = b.empty(value)
end
for key, _ in pairs(args) do
table.insert(data_list, key)
end
for key, value in pairs(args) do
if b.is_include_value(key, be_data_list) then
for i, be_data_value in ipairs(be_data_list) do
if key == be_data_value then
data[i] = { key, b.trim(value) }
break
end
end
else
if type(key) ~= "number" then
data[key] = value
end
end
end
for key, value in pairs(args) do
if type(key) == "number" then
for _, s_value in ipairs(classic_be_data_list) do
local now_key = 1
for i_key, i_value in ipairs(be_data_list) do
if s_value == i_value then
now_key = i_key
break
end
end
if (not b.empty(args[s_value])) and ((s_value == "名称" and not b.empty(args["原名"]) and not b.empty(args["常用译名"])) or (s_value == "人物" and not b.empty(args["创始者"]) and not b.empty(args["现持有者"]) and not b.empty(args["参与制作者"]) and not b.empty(args["制作者"])) or (s_value == "日期" and not b.empty(args["发布日期"])) or (s_value ~= "名称" and s_value ~= "人物" and s_value ~= "日期")) then
if mw.ustring.find(value, ("模板:" .. s_value)) then
data[now_key] = { s_value, b.trim(value) }
end
end
end
end
end
for key, value in pairs(data) do
if type(key) == "number" then
p.smw_assign(value[1], value[2], classify)
else
p.smw_assign(key, value, classify)
end
end
for key, value in ipairs(data) do
if value[1] == "状态" and b.empty(temp_time) then
data[key][2] = temp_time .. "<br>" .. data[key][2]
end
if value[1] == "发布日期" then
data[key] = ""
end
if value[1] == "日期" then
data[key] = ""
end
end
local result = p.core(data)
return result
end
--
function p.smw_assign(key, value, classify)
local smwset_table = {}
if classify == "au" then
if key == "image" and not (mw.ustring.find(value, "[[", 1, true) or mw.ustring.find(value, "{{", 1, true)) then
table.insert(smwset_table, '头图=' .. value)
elseif key == "类型" and not mw.ustring.find(value, "模板:" .. key) then
local list = b.str_split(value, "、")
for _, s_value in ipairs(list) do
table.insert(smwset_table, '类型组=' .. s_value .. ";;;")
end
elseif key == "风格" and not mw.ustring.find(value, "模板:" .. key) then
local list = b.str_split(value, "、")
for _, s_value in ipairs(list) do
table.insert(smwset_table, '风格组=' .. s_value .. ";;;")
end
elseif key == "背景" and not mw.ustring.find(value, "模板:" .. key) then
local list = b.str_split(value, "、")
for _, s_value in ipairs(list) do
table.insert(smwset_table, '背景组=' .. s_value .. ";;;")
end
elseif key == "状态" and not mw.ustring.find(value, "模板:" .. key) then
table.insert(smwset_table, '状态组=' .. value .. ";;;")
end
end
if #smwset_table ~= 0 then
mw.smw.set(smwset_table)
end
end
--
return p