Module:ConvertLink:修订间差异

来自Arcaea中文维基
无编辑摘要
无编辑摘要
第68行: 第68行:
    return al
    return al
end
end
function p.packLink(packName, short)
-- 曲包名称转换成链接
-- short
-- true  简短(x Collaboration y)
-- false 完整(x Collaboration - Collaboration y)
local cc = 'Collaboration %- Collaboration'
local ccl = 'Collaboration#Collaboration'
local packLink = string.gsub(packName, cc, ccl)
local packDisplay
if short then
local ccd = 'Collaboration'
packDisplay = string.gsub(packName, cc, ccd)
else
packDisplay = packName
end
local pcak = link(packLink, packDisplay)
end
function p.packLinkId(packId, short)
-- 曲包ID转换成链接
-- long_ver 同 p.packLink
local trans = mw.loadJsonData 'Template:Transition.json'
local packName = trans.packName(packId)
local packLink = p.packLink(packName, short)
end
function p.artistLinkFrame(frame)
   if frame then
   if frame.args['name'] then
   local name = frame.args['name']
   return p.packLink(name)
   elseif frame.args['id'] then
   local id = frame.args['id']
   return p.packLinkId(id)
   end
   else
   return ''
   end
end


return p
return p

2024年7月1日 (一) 17:20的版本

可在Module:ConvertLink/doc创建此模块的帮助文档

local p = {}

-- local mad = require 'Module:AnotherData'

local function link(l, d)
    if d then
        return '[[' .. l .. '|' .. d .. ']]'
    else
        return '[[' .. l .. ']]'
    end
end

function p.artistLink(artistName)
	-- 将songlist中纯文本形式的曲师名称转换为带一个或多个链接的曲师名称,同时进行日文转换
	-- 输入:曲师名称(需要与songlist内完全一致,或仅存在空格差异)(不要手打!!)
	-- 返回:带链接的曲师名称
	-- 若预期返回多个链接,实际返回一个链接;或曲师使用了马甲未能正确识别,请在 Template:ComplexArtistsList.json 添加新规则
	-- 添加示例:
		  --  "LaurvsCK": [  ## 曲目的曲师,空格替换为空(' ' -> '':"Laur vs CK" -> "LaurvsCK")
		  --      {
		  --          "link": "Laur",  ## 第一位曲师的链接,建议使用曲师列表中对应<span id="xx" />位置的名称
		  --          "display": "Laur" ## 第一位曲师的显示名称,复制进来即可
		  --      },
		  --      {
		  --          "link": false,  # link为false,表示这组字符串不需要链接或不在曲师列表中
		  --          "display": " vs " # 不需要链接的字符串,空格也要包括
		  --      },
		  --      {
		  --          "link": "CK(しーけー)", ## 下一位曲师的链接,找到<span id="CK(しーけー)" />填入
		  --          "display": "CK" ## 下一位曲师的显示名称,复制进来即可,此时值与link的值不同
		  --      }
		  --  ]
	-- 注意事项:json转义符,如曲师名称有 " 需要写成 \"(点名Gram(DJ Genki))
	if artistName then artistName=tostring(artistName) else return end
	local cal = mw.loadJsonData 'Template:ComplexArtistsList.json'
	local function formatJapaneseText(text)
    return mw.ustring.gsub(
        text, '[一-龠ぁ-ゔァ-ヴー々〆〤ヶ]+',
        function(v) return ('<span lang="ja">-{%s}-</span>'):format(v) end
    )
	end
	local artist = ''
	local artist_list = cal[string.gsub(artistName, ' ' , '')]
	if artist_list then
		for _, data in ipairs(artist_list) do
			local display_ja = formatJapaneseText(data.display)
			if data.link then
    			artist = artist .. link('曲师列表#' .. data.link, display_ja)
    		else
    			artist = artist .. display_ja
			end
		end
	else
    		artist = formatJapaneseText(artistName)
    		artist = link('曲师列表#' .. artistName, artist)
	end
	return artist
end

function p.artistLinkFrame(frame)
    local name
    if frame and frame.args[1] then 
        name = frame.args[1] 
    else 
        return ''
    end
    local al = p.artistLink(name)
    return al
end

function p.packLink(packName, short)
	-- 曲包名称转换成链接
	-- short
		-- true  简短(x Collaboration y)
		-- false 完整(x Collaboration - Collaboration y)
	local cc = 'Collaboration %- Collaboration'
	local ccl = 'Collaboration#Collaboration'
	local packLink = string.gsub(packName, cc, ccl)
	local packDisplay
	if short then
		local ccd = 'Collaboration'
		packDisplay = string.gsub(packName, cc, ccd)
	else
		packDisplay = packName
	end
	local pcak = link(packLink, packDisplay)
end

function p.packLinkId(packId, short)
	-- 曲包ID转换成链接
	-- long_ver 同 p.packLink
	local trans = mw.loadJsonData 'Template:Transition.json'
	local packName = trans.packName(packId)
	local packLink = p.packLink(packName, short)
end

function p.artistLinkFrame(frame)
    if frame then 
    	if frame.args['name'] then
    		local name = frame.args['name']
    		return p.packLink(name)
    	elseif frame.args['id'] then
    		local id = frame.args['id']
    		return p.packLinkId(id)
    	end
    else
    	return ''
    end
end



return p