模块:OreDictionary
本模块引自我的世界玩家社区Wiki,遵循CC BY SA 3.0协议;此文档并非引用内容
在“我的世界玩家社区Wiki”,此模块主要配合“图片格子/矿词”模板和“动态显示”模板使用。
利用语义化维基扩展(SMW),于页面上写入某个物品/方块的矿词,然后在使用时以数组形式打印出来,经由这个模块处理为“图片格子”送入“动态显示”。
--[[
{{#invoke:OreDictionary|icon|ask得到的array类型的返回}}(暂时不可用)
{{#invoke:OreDictionary|imgbox|ask得到的array类型的返回|高=|宽=|上=|下=|数量=}}
]]
local od = {}
function splitStr(str, delimeter)
local find, sub, insert = string.find, string.sub, table.insert
local res = {}
local start, start_pos, end_pos = 1, 1, 1
while true do
start_pos, end_pos = find(str, delimeter, start, true)
if not start_pos then
break
end
insert(res, sub(str, start, start_pos - 1))
start = end_pos + 1
end
insert(res, sub(str,start))
return res
end
function od.imgbox(frame)
local new_args = od._getParameters( frame.args,{'name','高','宽','上','左','数量'} );
local fname = new_args['name'] or '';
local hei = new_args['高'] or '';
local wid = new_args['宽'] or '';
local up = new_args['上'] or '';
local down = new_args['左'] or '';
local count = new_args['数量'] or '';
local temptable = splitStr(fname,',');
local tl = '{{动态显示|style=|高=' .. hei .. '|宽=' .. wid;
local tempstring = '';
for i = 1, #temptable do
tempstring = '|{{图片格子/元模板|高=' .. hei .. '|宽=' .. wid .. '|数量=' .. count .. '|上=' .. up .. '|左=' .. down .. '|' .. temptable[i] .. '.png|链接=' .. temptable[i] .. '}}';
tl = tl .. tempstring;
end
tl = tl .. '}}';
tl = frame:preprocess(tl);
return tl
end
function od.icon(frame)
local new_args = od._getParameters( frame.args, { 'name' } );
local fname = new_args['name'] or '';
return fname
end
function od._getParameters( frame_args, arg_list )
local new_args = {};
local index = 1;
local value;
for i,arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index];
index = index + 1;
end
new_args[arg] = value;
end
return new_args;
end
return od