跳转到内容
打开/关闭搜索
搜索
打开/关闭菜单
383
文件
1
用户
6004
编辑
Gal中文百科
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
在其他项目中
打开/关闭外观设置菜单
无法加载偏好设置。请检查您的网络连接并重试。
重试
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
讨论
贡献
创建账号
登录
编辑“︁
Module
:
Infobox VG
”︁
来自Gal中文百科
查看
阅读
编辑源代码
查看历史
associated-pages
模块
讨论
更多操作
更多
工具
链入页面
相关更改
页面信息
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
local getArgs = require("Module:Arguments").getArgs local yesno = require("Module:Yesno") local function has_content(arg) return arg ~= nil and arg ~= "" end local function get_wikidata_data(args, id) local opts = {id} opts.fetchwikidata = has_content(args.fetchwikidata) and args.fetchwikidata or "ALL" opts.suppressfields = has_content(args.suppressfields) and args.suppressfields or nil opts.onlysourced = has_content(args.onlysourced) and args.onlysourced or "yes" opts.qid = has_content(args.qid) and args.qid or nil opts.refs = has_content(args.refs) and args.refs or "no" opts.noicon = has_content(args.noicon) and args.noicon or "no" return require("Module:WikidataIB")._getValue(opts) end local function collapse(header, content) if has_content(header) then return mw.getCurrentFrame():expandTemplate { title = "Infobox VG/C", args = {header, content} } end return content end local function get_header_params(param) if mw.ustring.find(param, "_") then return {param .. " header"} end if mw.ustring.find(param, " ") then return {param .. " header"} end return {param .. " header", param .. "_header"} end local p = {} -- 信息框式样 local infobox_styles = { captionstyle = "text-align: center;", subheaderstyle = "text-align: center; vetical-align: middle; font-weight: normal;", labelstyle = "white-space: nowrap;" } -- 标题和外文名参数 local headers = function(args) local result = {} local all_parameters = {"title", "original", "japanese", "english", "english2"} -- 主标题 if has_content(args.title) then result.above = args.title else result.above = mw.ustring.gsub(tostring(mw.title.getCurrentTitle().rootText), " %([^)]+%)$", "") end -- 外文标题 local foreign_titles = {} if has_content(args.original) then local str = args.original if mw.ustring.find(str, ":") then str = mw.ustring.gsub(str, "^([^:]-):(.+)$", '-{<span lang="%1" xml:lang="%1">%2</span>}-') end table.insert(foreign_titles, str) end if has_content(args.japanese) then local str = '-{<span lang="ja" xml:lang="ja">' .. args.japanese .. "</span>}-" table.insert(foreign_titles, str) end if has_content(args.english) then local str = '-{<span lang="en" xml:lang="en">\'\'' .. args.english .. "''</span>}-" table.insert(foreign_titles, str) end if has_content(args.english2) then local str = '-{<span lang="en" xml:lang="en">\'\'' .. args.english2 .. "''</span>}-" table.insert(foreign_titles, str) end if table.maxn(foreign_titles) > 0 then local str = require("Module:List").unbulleted(foreign_titles) result.subheader1 = str end -- Done return result, all_parameters end -- 图像与图注参数 local images = function(args) local varieties = {"", "-hans", "-hant", "-cn", "-hk", "-mo", "-my", "-sg", "-tw"} local result, all_parameters = {}, {} -- image系、alt系参数 local infobox_image_params = {} for _, v in ipairs(varieties) do local add_para = function(prefix) local para = prefix .. v table.insert(all_parameters, para) infobox_image_params[para] = args[para] end add_para("image") add_para("alt") end -- 图像尺寸参数 local image_size_paras = {"image_size", "image size", "imagesize"} for _, v in ipairs(image_size_paras) do table.insert(all_parameters, v) end for _, v in ipairs(image_size_paras) do if has_content(args[v]) then infobox_image_params.size = args[v] break end end infobox_image_params.sizedefault = "frameless" result.image = require("Module:InfoboxImageVariant2")._main(infobox_image_params) -- 图注参数 table.insert(all_parameters, "caption") result.caption = args.caption -- Done return result, all_parameters end -- 常规栏位参数 local fields = function(args) local result, all_parameters = {}, {} -- 参数配置 local subgroup_header = {"街机参数"} local params = { official = {"[[官方译名]]", alias = {}}, common = {"常用译名", alias = {}}, genre = {"[[电子游戏类型|类型]]", alias = {}, wd = "P136"}, platforms = {"[[系统平台|平台]]", alias = {"platform"}, wd = "P400"}, developer = {"[[游戏开发者|开发商]]", alias = {}, wd = "P178"}, publisher = {"[[电子游戏发行商|发行商]]", alias = {}, wd = "P123"}, director = {"总监", alias = {}, wd = "P57"}, producer = {"[[电子游戏制作人|制作人]]", alias = {}, wd = "P162"}, designer = {"[[电子游戏设计|设计师]]", alias = {}, wd = "P287"}, writer = {"编剧", alias = {}, wd = "P50"}, programmer = {"[[游戏程序师|-{zh-cn:程序; zh-tw:程式;}-]]", alias = {}, wd = "P943"}, artist = {"[[游戏美工|美术]]", alias = {}, wd = "P3080"}, composer = {"音乐", alias = {}, wd = "P86"}, series = {"系列", alias = {}, wd = "P179"}, engine = {"[[游戏引擎|引-{}-擎]]", alias = {}, wd = "P408"}, modes = {"模式", alias = {}, wd = "P404"}, released = {"发行日", alias = {"release"}, wd = "P577"}, shutdown = {"停运日", alias = {}}, -- 街机参数 cabinet = {"框体", alias = {}, subgroup = 1}, arcade_system = {"[[街机主板|主板]]", alias = {}, subgroup = 1}, cpu = {"[[中央处理器|CPU]]", alias = {}, subgroup = 1}, sound = {"音效", alias = {}, subgroup = 1}, display = {"显示", alias = {}, subgroup = 1} } local param_order = { "official", "common", "genre", "platforms", "developer", "publisher", "director", "producer", "designer", "writer", "programmer", "artist", "composer", "series", "engine", "modes", "released", "shutdown", "cabinet", "arcade_system", "cpu", "sound", "display" } -- 启用网络游戏参数时的修正 table.insert(all_parameters, "onlinegame") if yesno(args.onlinegame, false) then params.publisher[1] = "-{zh-cn:运营; zh-tw:营运;}-商" params.released[1] = "-{zh-cn:运营; zh-tw:营运;}-日" end -- 将空格分隔字段名作为别名 for _, v in ipairs(param_order) do local alias_temp = params[v].alias table.insert(alias_temp, 1, v) local alias = {} for _, w in ipairs(alias_temp) do table.insert(alias, w) if mw.ustring.find(w, "_") then local str = mw.ustring.gsub(w, "_", " ") table.insert(alias, str) end end params[v].alias = alias end -- 根据参数名读取标签和资料 local wikidata_args = {"fetchwikidata", "suppressfields", "onlysourced", "qid", "refs", "noicon"} for _, v in ipairs(wikidata_args) do table.insert(all_parameters, v) end local function get_label_and_data(param) local info = params[param] local label, data, subgroup = info[1], nil, (info.subgroup or 0) for _, v in ipairs(info.alias) do data = args[v] if has_content(data) then for _, w in ipairs(get_header_params(v)) do if has_content(args[w]) then data = collapse(args[w], data) break end end return label, data, subgroup end end -- 指定为空字串值时返回空值 if data == "" then return end -- 尝试读取wikidata资料 if info.wd == nil then return end local data = get_wikidata_data(args, info.wd) if has_content(data) then return label, data, subgroup end end -- 返回给Infobox的字段信息 local num, previous_subgroup = 0, 0 for _, v in ipairs(param_order) do local label, data, subgroup = get_label_and_data(v) if label ~= nil then -- 处理header if subgroup > previous_subgroup then num = num + 1 result["header" .. tostring(num)] = subgroup_header[subgroup] previous_subgroup = subgroup end -- 处理常规参数 num = num + 1 result["label" .. tostring(num)] = label result["data" .. tostring(num)] = data end end -- 返回给Check for unknown parameters的合法参数名称 for _, v in ipairs(param_order) do for _, w in ipairs(params[v].alias) do table.insert(all_parameters, w) -- 加入header参数 for _, x in ipairs(get_header_params(w)) do table.insert(all_parameters, x) end end end -- Done return result, all_parameters end function p.main(frame) local args = getArgs(frame, {removeBlanks = false}) return p._main(args) end function p._main(args) local result = nil local params, all_parameters = {}, {} -- 模板式样 for k, v in pairs(infobox_styles) do params[k] = v end local x = fields(args) -- 参数 local funcs = {headers, images, fields} for _, f in ipairs(funcs) do local params_temp, all_parameters_temp = f(args) for k, v in pairs(params_temp) do params[k] = v end for _, v in ipairs(all_parameters_temp) do table.insert(all_parameters, v) end end -- 模板本体 local temp = "" temp = tostring(require("Module:Infobox").infobox(params)) -- 未知参数检查 all_parameters.unknown = mw.title.getCurrentTitle().namespace == 0 and "[[Category:含有废弃电子游戏信息框参数的条目|_VALUE_]]" or "" all_parameters.preview = "本页<code>{{[[Template:Infobox VG|Infobox VG]]}}</code>使用了未知参数<code>_VALUE_</code>" temp = temp .. tostring(require("Module:Check for unknown parameters")._check(all_parameters, args)) -- 可能使用旗帜的Infobox_VG local file_ptns = {} table.insert(file_ptns, "%[%[%s*[Ff][Ii][Ll][Ee]%s*:") table.insert(file_ptns, "%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:") table.insert(file_ptns, "%[%[%s*文件%s*:") table.insert(file_ptns, "%[%[%s*[档档]案%s*:") table.insert(file_ptns, "%[%[%s*[图图]像%s*:") local function used_image() if mw.title.getCurrentTitle().namespace ~= 0 then return false end for _, v in pairs(all_parameters) do if mw.ustring.sub(v, 1, 5) ~= 'image' then for _, w in pairs(file_ptns) do if mw.ustring.match(mw.getCurrentFrame():preprocess(args[v]), w) then return true end end end end return false end if used_image() then temp = temp .. '[[Category:可能在电子游戏信息框中使用旗帜的条目]]' end -- Done return temp end return p
摘要:
请注意,所有对Gal中文百科的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Gal中文百科:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
此页面嵌入的页面:
Module:Infobox VG/doc
(
编辑
)
编辑“︁
Module
:
Infobox VG
”︁
来自Gal中文百科