本模塊是為了統一控制全站東方條目(主要是官方作品和角色)所涉及的信息而創建的。其內容以THBWiki作為標準。
模塊的調用方式為:
{{#invoke:東方Project|函數|參數1|參數2...}}
模塊中的函數已封裝成三個模板:Template:東方角色稱號、Template:東方音樂名、Template:東方角色符卡。正常僅需調用這些模板即可。
數據儲存在
本模塊的主要功能就是查詢信息,沒有複雜的功能和邏輯。
顯示角色稱號,部分角色稱號包含HTML標籤實現樣式。
{{#invoke:東方Project|稱號|博麗靈夢|紅魔鄉|zh}}
博麗神社的巫女小姐
{{#invoke:東方Project|稱號|四季映姬|文花帖|zh}}
嘮叨敬畏的話語
顯示官方作品中的音樂名。
{{#invoke:東方Project|音樂|緋想天|12|jp}}
雲外蒼天
顯示角色符卡名,部分符卡包含HTML標籤實現樣式。
{{#invoke:東方Project|符卡|八雲紫|憑依華|5|zh}}
「憑坐的憂鬱」
此外還有基於模塊封裝好的模板{{東方角色符卡表}}。
-- 模塊:東方Project
-- 模塊:東方Project:稱號
-- 模塊:東方Project:音樂
-- 模塊:東方Project:符卡
local titleZh = mw.loadData("模塊:東方Project:稱號(中文)")
local titleJp = mw.loadData("模塊:東方Project:稱號(日文)")
local musicZh = mw.loadData("模塊:東方Project:音樂(中文)")
local musicJp = mw.loadData("模塊:東方Project:音樂(日文)")
local spellcardZh = mw.loadData("模塊:東方Project:符卡(中文)")
local spellcardJp = mw.loadData("模塊:東方Project:符卡(日文)")
local spellcardStage = mw.loadData("模塊:東方Project:符卡(位置)")
local p = {}
local function getTitle(charName, workName, lang)
local title
if lang == "zh" then
title = titleZh[charName][workName]
elseif lang == "jp" then
title = titleJp[charName][workName]
else
return "Invalid Input"
end
if title then
return title
else
return "Title Not Found"
end
end
local function getMusic(workName, order, lang)
local music
if lang == "zh" then
music = musicZh[workName][order]
elseif lang == "jp" then
music = musicJp[workName][order]
else
return "Invalid Input"
end
if music then
return music
else
return "Music Not Found"
end
end
local function getSC(charName, workName, order, lang)
local spellcard
if lang == "zh" then
spellcard = spellcardZh[charName][workName][order]
elseif lang == "jp" then
spellcard = spellcardJp[charName][workName][order]
else
return "Invalid Input"
end
if spellcard then
return spellcard
else
return "Spell Card Not found"
end
end
local function printSC(charName, workName)
local tableprint = '<table class="wikitable"><tr><th>符卡原名</th><th>符卡譯名</th><th>使用場合</th></tr>'
local zh, jp, stage
local num = spellcardZh[charName][workName]["n"]
for i = 1,num do
zh = spellcardZh[charName][workName][i]
jp = spellcardJp[charName][workName][i]
stage = spellcardStage[charName][workName][i]
zh = '<td>' .. zh .. '</td>'
jp = '<td>' .. '<span lang="ja">-{' .. jp .. '}-</span>' .. '</td>'
stage = '<td>' .. stage .. '</td>'
tableprint = tableprint .. '<tr>' .. jp .. zh .. stage .. '</tr>'
end
return tableprint
end
--稱號
--{{#invoke:東方Project|稱號|角色|作品(含位置或順次)|語言}}
p["稱號"] = function(frame)
local charName = frame.args[1]
local workName = frame.args[2]
local lang = frame.args[3]
return getTitle(charName, workName, lang)
end
--音樂
--{{#invoke:東方Project|音樂|作品|順次(字符串)|語言}}
p["音樂"] = function(frame)
local workName = frame.args[1]
local order = frame.args[2]
local lang = frame.args[3]
return getMusic(workName, order, lang)
end
--符卡
--{{#invoke:東方Project|符卡|角色|作品|順次|語言}}
p["符卡"] = function(frame)
local charName = frame.args[1]
local workName = frame.args[2]
local order = tonumber(frame.args[3])
local lang = frame.args[4]
return getSC(charName, workName, order, lang)
end
--{{#invoke:東方Project|符卡表|角色|作品}}
p["符卡表"] = function(frame)
local charName = frame.args[1]
local workName = frame.args[2]
return printSC(charName, workName)
end
return p