Persona logo 2 500.png

非正式攻略组招募
如果你热爱女神转生 or 异闻录系列 并且愿意为女神异闻录WIKI添砖添瓦
可以加群一起共同建设,招募详情页见攻略组招募公告

——Pser_hanser
本WIKI由Pser_hanser于2020年10月21日申请开通,编辑权限开放,本WIKI旨在女神异闻录相关攻略以及周边信息汇总,招募攻公告见攻略组招募公告

BWIKI收藏到桌面的方法说明

全站通知:

模块:Nakama

来自女神转生WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

此模块的文档可以在模块:Nakama/doc创建

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,调用Hash模板
local function hash(frame, text)
	return frame:expandTemplate{ title = 'Hash', args = {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(frame, refernote) } )
	else
		return ''
	end
end

-- ruby格式
local function ruby(text1, text2, lang)
	if not lang then
		return '<ruby><rb>' .. text1 .. '</rb><rp> (</rp><rt style="font-size:.75em">' .. text2 .. '</rt><rp>) </rp></ruby>'
	else
		return '<ruby><rb>' .. text1 .. '</rb><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 not lang then
		return text1 .. ' (' .. text2 .. ')'
	else
		return text1 .. ' ({{ja|' .. text2 .. '}})'
	end
end

-- 简繁转换设置【BWIKI本地化】
local function sinotrans(zh, zhsc)
	return zhsc
end

-- Hover效果,调用TextHover模板
local function hover(frame, text1, text2)
	return frame:expandTemplate{ title = 'TextHover', args = {text1, text2, 'before', 'center', tag = 'span'} }
end

-- Wiki文本解析,调用Eval模板
local function wikitext(frame, text1)
	return frame:expandTemplate{ title = 'Eval', args = {'wikitext', text1} }
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 style="color:red;font-weight:bold"><abbr title="數據庫中沒有名爲『' .. dname .. '』的仲魔。請手動添加至[[模块:Nakama/Names]]。">' .. dname .. '</abbr></span>' end
	local result = '[[' .. dv.namezhsc .. '|'
	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