Module:Nakama
跳到导航
跳到搜索
《真·女神转生》大系数据编纂和样式设计统一模块。已封装为各种模板,请参见模板说明。
与 Megami Tensei Wiki 同步修改,但有较大本地化差异。
结构
|
|
数据库
基础基础数据字段套组
|
技能《真·女神转生》系列《女神异闻录》系列
|
维护
可参与的维护工作
请至《真·女神转生》大系编辑者群(832689630)中进一步了解。
可阅读 User:Greykid/参考手册 了解更多相关知识。
更新日志
往期更新日志 | ||
---|---|---|
|
- 2020/11/7-8:大幅拆分、调整模块结构,为《真·女神转生III》《真·女神转生V》数据编写做准备。
- 2020/12/8:增「连携技能表」「合体表」,调格式。
local getArgs = require('Module:Arguments').getArgs local getGames = require('Module:Psk/Gamedata') local p = {} -- 實現 #invoke 函数式調用 local function makeInvokeFunction(funcName) return function (frame) local args = getArgs(frame, {parentOnly = true}) return p[funcName](args) end end -- 實現 #invoke 函数式調用,保留frame local function makeInvokeFunctionWithFrame(funcName) return function (frame) local args = getArgs(frame, {parentOnly = true}) return p[funcName](frame, args) end end -- 字符串MD5 Hash local function hash(text) return mw.hash.hashValue('md5', text) end -- 添加注释 local function refer(frame, refernote) if mw.title.getCurrentTitle():inNamespace('') and refernote and refernote ~= '' then return frame:extensionTag('ref', refernote, { group = '注', name = hash(refernote) }) end return '' end -- ruby格式 local function ruby(text1, text2, lang) if not lang then return '<ruby>' .. text1 .. '<rp> (</rp><rt style="font-size:.75em">' .. text2 .. '</rt><rp>) </rp></ruby>' else return '<ruby>' .. text1 .. '<rp> (</rp><rt style="font-size:.75em" lang="' .. lang .. '">' .. text2 .. '</rt><rp>) </rp></ruby>' end end -- inline ruby格式 local function ilruby(text1, text2, lang) if lang then text2 = string.format('<span lang="%s">-{%s}-</span>', lang, text2) end return text1 .. ' (' .. text2 .. ')' end -- 简繁转换设置 local function sinotrans(zh, zhsc) return '-{zh-hant:' .. zh .. '; zh-hans:' .. zhsc .. ';}-' end -- Hover效果,调用TextHover模板 local function hover(frame, text1, text2) return frame:expandTemplate{ title = 'TextHover', args = {text1, text2, 'before', 'center', tag = 'span'} } end -- 关键字消歧义 local function get_prop(args) local prop = {} for k, v in pairs(require('Module:Psk/Property_names')) do for _, name in ipairs(v) do if args[name] then prop[k] = args[name] break end end prop[k] = prop[k] or v.default end return prop end -- 仲魔名稱ruby格式渲染模块 p.nakama = makeInvokeFunctionWithFrame('_nakama') function p._nakama(frame, args) local data = require('Module:Nakama/Names') local dname = args[1] or args.name or args.Name or '' local diylink = args.link or args.Link or '' local dv = data.nakamas[dname] if not dv then local alias = data.aliases[dname] if alias then dname = alias dv = data.nakamas[dname] end end if not dv then return '<span><abbr title="提醒编辑者:數據庫中沒有名爲『' .. dname .. '』的仲魔。请检查拼写,或手動添加至[[模块:Nakama/Names]]。">' .. dname .. '</abbr></span>' end local result = '[[' .. dv.namezh .. '(女神转生系列)|' -- 原先是:'[[人格面具/列表:' .. string.sub(dname, 1, 1) .. '#' .. dname .. '|' if dv.link and dv.link ~= '' then result = '[[' .. dv.link .. '|' end if diylink ~= '' then result = '[[' .. diylink .. '|' end if args[2] == 'ja' or args[3] == 'ja' or args[4] == 'ja' then if args[2] == 'inline' or args[3] == 'inline' or args[4] == 'inline' then result = result .. ilruby(sinotrans(dv.namezh, dv.namezhsc), dv.namejp, 'ja') .. ']]' else result = result .. ruby(sinotrans(dv.namezh, dv.namezhsc), dv.namejp, 'ja') .. ']]' end elseif args[2] == 'en' or args[3] == 'en' or args[4] == 'en' then if args[2] == 'inline' or args[3] == 'inline' or args[4] == 'inline' then result = result .. ilruby(sinotrans(dv.namezh, dv.namezhsc), dname) .. ']]' else result = result .. ruby(sinotrans(dv.namezh, dv.namezhsc), dname) .. ']]' end else result = result .. sinotrans(dv.namezh, dv.namezhsc) .. ']]' end if dv.note and not (args[2] == 'noref' or args[3] == 'noref' or args[4] == 'noref') then result = result .. refer(frame, dv.note) end if args[2] == 'sort' or args[3] == 'sort' or args[4] == 'sort' then result = 'data-sort-value="' .. dname .. '"|' .. result end return result end return p