Módulo:Desmontar/list

De RuneScape Wiki
Ir para: navegação, pesquisa
Documentação do módulo
Esta documentação é transcluída de Módulo:Desmontar/list/doc. [editar] [atualizar]
Módulo:Desmontar/list's a função main é invocada por Predefinição:Lista de objetos de desmontagem.
Módulo:Desmontar/list carrega dados de Módulo:Desmontar/data.

-- <pre>
local p = {}

local disdata = mw.loadData('Módulo:Desmontar/data')
local nocalc = {
    refined = 1,
}

function p.main(frame)
	local args = frame:getParent().args
	local name = args[1] or ''
	local catname = name
	name = string.lower(name):gsub('peças?',''):gsub('pomponentes?','')

	name = mw.text.trim(name)

	local ret = {
	    string.format(':<i>Lista: [[:Categoria:Objetos que desmontam em %s]]</i>',catname)
	}
	if not nocalc[name:lower()] then
	    table.insert(ret, string.format(':<i>Calculadora: [[Calculator:Desmontagem por material/%s]]</i>',catname:gsub('peças?',''):gsub('pomponentes?','')))
	end
    
	local list = {}
	local _listed = {}
	local addcalc = {}

	for _, v in pairs(disdata) do
		local dislist = table.concat({v.often or '', v.sometimes or '', v.rarely or ''},',')
		local calc = v.nocalc == nil

		dislist = string.lower(dislist)
		dislist = mw.text.split(dislist,'%s*,%s*')
		for _, w in ipairs(dislist) do
			if w == name then
				if _listed[v.cat or ''] then
					-- do nothing
				else
					table.insert(list, { v.name, v.cat })
					_listed[v.cat] = true
					if calc then
						addcalc[v.cat] = true
					end
				end
			end
		end
	end
	table.sort(list, function(a,b) return a[1] < b[1] end)
	for _, v in ipairs(list) do
		if addcalc[v[2]] then
			table.insert(ret,string.format('* [[:Categoria:Categoria de desmontagem/%s|%s]] ([[Calculadora:Desmontagem por categoria/%s|Calculadora de análise de custos]])',v[2],v[1],v[2]))
		else
			table.insert(ret,string.format('* [[:Categoria:Categoria de desmontagem/%s|%s]]',v[2],v[1]))
		end
	end
	return table.concat(ret,'\n')
end

return p