Módulo:Inventário

De RuneScape Wiki
Ir para: navegação, pesquisa
Documentação do módulo
Esta documentação é transcluída de Predefinição:Sem documentação/doc. [editar] [atualizar]
Este módulo não possui nenhuma documentação. Por favor, considere adicionar uma documentação em Módulo:Inventário/doc. [editar]
Módulo:Inventário's a função main é invocada por Predefinição:Inventário.
Módulo:Inventário requer Module:Paramtest.

-- <pre>
local p = {}

local hasc = require('Module:Paramtest').has_content

local left_pos = {
	'5px',
	'2px',
	'-1px',
	'-5px'
}

function formatAmount(_x)
    local x = tonumber(_x) or 1
    if x < 100000 then
        return x, 'qty-1'
    elseif x < 10000000 then
        return tostring(math.floor(x/1000))..'K', 'qty-100k'
    else
        return tostring(math.floor(x/1000000))..'M', 'qty-10m'
    end
end

function p.main(frame)
	local args = frame:getParent().args
	local items = {}
	for i=1,28 do
		local v = mw.text.trim(args[i] or '')
		local item_x
		local amt_x = 1
		local note_x = false
		if hasc(v) then
			v = v:gsub('[][]','')
			amt_x = tonumber(v:match('\\(%d+)')) or 1
			note_x = v:match(';n') == ';n'
			local v2 = mw.text.split(v,'[;\\]')
			item_x = v2[1]
		end
		table.insert(items,{item=item_x,amt=amt_x,isnoted=note_x})
	end
	local align = args.align
	local acss
	if hasc(align) then
		align = align:lower()
		if align == 'right' or align == 'left' then
			acss = 'float:'..align
		elseif align == 'center' then
			acss = 'margin:0 auto'
		end
	end
	return p._main(items,acss)
end

function p._main(items,acss)
	local ret = mw.html.create('table')
				:addClass('inventorytable inventory-image')
				:cssText(acss or '')

	local item = 0
	for i=1,7 do
		local ret_row = mw.html.create('tr')
		for j=1,4 do
			item = item + 1
			local itemx = items[item].item
			local amtx = items[item].amt
			local notex = items[item].isnoted
			local td = ret_row:tag('td'):css({left = left_pos[j] })
			if hasc(itemx) then
				local amt_text = ''
				if amtx > 1 or notex then
					local amtx_f, amtx_c = formatAmount(amtx)
					local amt_span = mw.html.create('span')
								:addClass('inv-quantity-text '..amtx_c)
								:wikitext(amtx_f)
							:done()
					amt_text = tostring(amt_span)
				end
				
				if notex then
					td:addClass('noted-item')
				end

				td:wikitext( string.format('[[File:%s.png|link=%s|32x32px|frameless]]%s', itemx, itemx, amt_text) )
			end
		end
		ret:node(ret_row)
	end

	return ret
end

return p