←模块:信息框欢迎来到Undertale社区维基(*`∀´*)ノ亻,如果想要参与条目创建或编辑,请先登录哦因为以下原因,您没有权限编辑本页: 您请求的操作仅限属于该用户组的用户执行:用户 您可以查看和复制此页面的源代码。 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 本页使用的模板: 模块:信息框/doc(查看源代码)返回模块:信息框。