模块: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