打开/关闭搜索
搜索
打开/关闭菜单
15
6636
39
1万
OGAS数据中枢
导航
首页
最近更改
随机页面
特殊页面
上传文件
少女前线
简介
战术人形
装备图鉴
BGM
任务
打开/关闭外观设置菜单
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
登录
查看“︁Module:GFInfobox”︁的源代码
来自OGAS数据中枢
更多操作
←
Module:GFInfobox
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
管理员
您可以查看和复制此页面的源代码。
local p = {} function p.main(frame) local args = frame.args local html = mw.html.create('div') :addClass('moe-infobox gf-infobox') -- 标题 html:tag('div') :addClass('gf-title') :wikitext(cleanParam(args['标题'] or args['名字'] or mw.title.getCurrentTitle().subpageText)) -- 图片 local image = cleanParam(args['image']) if image and image ~= '' then local imgContainer = html:tag('div') :addClass('gf-image-container') imgContainer:wikitext(string.format('[[File:%s|280px|class=infobox-image]]', image)) if cleanParam(args['图片说明']) ~= '' then imgContainer:wikitext('<br/>') imgContainer:wikitext(cleanParam(args['图片说明'])) end else html:tag('div') :addClass('gf-image-container') :wikitext('啊嘞?!<br/>怎么回事<br/>这个妹子怎么没有头的样子……') end -- 基础资料 html:tag('div') :addClass('gf-section') :wikitext('基础资料') -- 信息字段列表 local fields = { {'本名', cleanParam(args['本名'])}, {'别名', processMixedContent(args['别名'], frame)}, {'发色', formatHairColor(args, frame)}, {'瞳色', formatEyeColor(args, frame)}, {'声优', formatVoiceActor(args)}, {'萌点', processMixedContent(args['萌点'], frame)}, {'类型', formatWeaponType(cleanParam(args['类型']))}, {'稀有度', formatRarity(cleanParam(args['稀有度']))}, {'原产国', cleanParam(args['原产国'])}, {'研发者', cleanParam(args['研发者'])}, {'研发商', cleanParam(args['研发商'])}, {'研发日期', cleanParam(args['研发日期'])}, {'生产商', cleanParam(args['生产商'])}, {'生产日期', cleanParam(args['生产日期'])}, {'服役期间', cleanParam(args['服役期间'])}, {'出身地区', cleanParam(args['出身地区'])}, {'活动范围', cleanParam(args['活动范围'])}, {'所属团体', cleanParam(args['所属团体'])}, {'个人状态', cleanParam(args['个人状态'])} } for _, field in ipairs(fields) do local label, value = field[1], field[2] if value and value ~= '' then local row = html:tag('div'):addClass('gf-row') row:tag('div') :addClass('gf-label') :wikitext(label) row:tag('div') :addClass('gf-value') :wikitext(value) end end -- 亲属或相关人 local related = processMixedContent(args['相关人士'], frame) if related and related ~= '' then html:tag('div') :addClass('gf-section') :wikitext('亲属或相关人') html:tag('div') :addClass('gf-related') :wikitext(related) end return tostring(html) end -- 基础清理函数:去除首尾空白和换行 function cleanParam(s) if not s then return nil end -- 去除首尾空白字符(包括换行、回车、制表符等) s = s:gsub('^[%s\n\r\t]+', ''):gsub('[%s\n\r\t]+$', '') return s end -- 处理包含模板的混合内容:将换行符替换为空格,但保留模板展开的内容 function processMixedContent(s, frame) if not s then return nil end -- 先清理首尾空白 s = cleanParam(s) if s == '' then return nil end -- 将内容中的换行符替换为空格,但小心不要破坏模板调用 -- 更安全的方法:将连续的空白字符替换为单个空格 s = s:gsub('%s+', ' ') return s end -- 格式化发色 function formatHairColor(args, frame) local multiColor = cleanParam(args['多种发色']) if multiColor and multiColor ~= '' then return multiColor end local hairColor = cleanParam(args['发色']) if hairColor and hairColor ~= '' then return frame:preprocess('{{Hair_color|' .. hairColor .. '}}') end return nil end -- 格式化瞳色 function formatEyeColor(args, frame) local multiColor = cleanParam(args['多种瞳色']) if multiColor and multiColor ~= '' then return multiColor end local eyeColor = cleanParam(args['瞳色']) if eyeColor and eyeColor ~= '' then return frame:preprocess('{{Eye_color|' .. eyeColor .. '}}') end return nil end -- 格式化声优 function formatVoiceActor(args) local multiVA = cleanParam(args['多位声优']) if multiVA and multiVA ~= '' then return multiVA end local voiceActor = cleanParam(args['声优']) if voiceActor and voiceActor ~= '' then return string.format('[[%s]]', voiceActor) end return nil end -- 格式化武器类型 function formatWeaponType(weaponType) local weaponTypes = { ['手枪'] = '手枪', ['冲锋枪'] = '冲锋枪', ['步枪'] = '步枪', ['突击步枪'] = '突击步枪', ['机枪'] = '机枪', ['霰弹枪'] = '霰弹枪' } if weaponType and weaponTypes[weaponType] then return weaponTypes[weaponType] end return weaponType end -- 格式化稀有度 function formatRarity(rarity) if not rarity or rarity == '' then return nil end local rarityColors = { [2] = '#777777', [3] = '#33566f', [4] = '#7b813f', [5] = '#a7753b', [6] = '#ad4229' } -- 处理数字 local num = tonumber(rarity) if num then local color = rarityColors[num] if color then return string.format('<span style="color:%s">%s</span>', color, string.rep('★', num)) end return rarity end -- 处理星星 local starCount = 0 rarity:gsub('★', function() starCount = starCount + 1 end) if starCount > 0 then local color = rarityColors[starCount] if color then return string.format('<span style="color:%s">%s</span>', color, rarity) end return rarity end -- 处理箭头 return rarity:gsub('%s*→%s*', ' → '):gsub('%s*->%s*', ' → ') end return p
该页面嵌入的页面:
Module:GFInfobox/doc
(
查看源代码
)
返回
Module:GFInfobox
。
查看“︁Module:GFInfobox”︁的源代码
来自OGAS数据中枢