模块:Data
跳到导航
跳到搜索
本模块用来获取关卡信息。许多模板例如{{关卡信息}}、{{关卡列表}}、{{关卡导航}}都依赖于此模板。
关卡信息[编辑]
关卡信息储存在模块:Data/Level中。
次序获取功能[编辑]
次序获取功能是该模块的p.getName
函数,它能够通过参数作为名称,来返回这一关的域名(number形式)。该函数可以将关卡的中文名、繁体中文名或者罗马数字名称(即在8比特出现之前的前10关的名称)来返回关卡次序。不能通过{{#invoke:}}
调用。如果找不到次序,则直接返回原来的文本。
>print(p.getName("山丘"))
1
>print(p.getName("IX"))
电子迷宫
>print(p.getName("Hello world"))
Hello world
翻译功能[编辑]
翻译功能能够自动识别参数的中文,并转化为英文作为字符串形式的域名,该函数的名称为p.translate
,可以通过{{#invoke:}}
调用。
>print(p.translate("钻石"))
diamond
这样,使用获取关卡信息的函数时就可以使用中文了。不过翻译列表是特定的。
在模块中,可以使用p.translate(原文)
来返回文字。直接使用p.translate()
而不带参数将会返回整个翻译列表。
local p={}
p.data={}
p.data.level=mw.loadData("模块:Data/Level")
--==关卡次序获取功能,能够利用迭代将关卡名称等信息转换为p.data.level中的次序==--
function p.getName(x)
for k,v in pairs(p.data.level) do
if v.name==x then
return k
elseif v.nameT==x then
return k
end
end
--如果无法匹配,则直接还原输入的值
return x
end
--==翻译功能,能够自动识别参数中的中文并翻译成可行的英文参数==--
function p.translate(x)
local translate={
-- 翻译列表
name={"名称";"名稱";"名字"};
en={'英文名'},
order={"编号";"編號"};
diamond={"钻石";"鑽石"};
star={"星";"星星"};
locked={"锁定";"鎖定";"需要解锁";"需要解鎖"};
crown={"皇冠"};
roman={"罗马";"罗马数字";"羅馬";"羅馬數字"};
coming={"即将到来";"即將到來"};
present={"礼物";"禮物"};
version={"版本";"最早版本"};
}
if type(x) == 'table' then
x=x.args[1]
elseif type(x) == 'string' then
x = x
else
x = nil
return translate
end
local translation
local result
--迭代部分,开始翻译
for k,v in pairs(translate) do
if k==x then return k end
local item = translate[k]
for m,n in ipairs(item) do
if n==x then return k end
end
end
return result or x
end
p["翻译"]=p.translate--等价函数
p["翻譯"]=p.translate--等价函数
--==获取关卡数据,能够通过{{#invoke:data|getLevelData}}中的参数返回关卡数据,以维基文本的形式==--
function p.getLevelData(frame)
local m = frame.args
local d = p.data.level[p.getName(m[1])]
local v = type(d)=='table' and d[p.translate(m[2])]
return v and tostring(v) or ''
end
p["获取关卡数据"]=p.getLevelData--等价函数
p["獲取關卡數據"]=p.getLevelData--等价函数
--== 版本获取功能 ==--
function p.getVersion(a)
return "暂时未提供版本获取功能,请等待该功能加入后使用。参见[[模块:Data]]。"
end
return p