Module:ItemIDList

From Terraria Wiki
Jump to navigation Jump to search

No documentation subpage exists yet for this module. Create one now.


local tr = require('Module:Tr')
local getNames = require('Module:ItemNames').getData
local info = require('Module:Iteminfo').info
local idSets = require('Module:Iteminfo/idSets')

local tag = mw.text.tag

local na
local lang
local none
local not_implemented
local replaceName = {}

-- handler for name cell
local nameCell = {
	-- default handler
	['en'] = function(name, linkName, id)
		return (name == '') and na or ('[[' .. tr.translateLink(linkName, lang) .. '|' .. tr.translate(name, lang) .. ']]'
			-- unimplemented items that have pages
			.. (idSets.getValue('Unused', id) and '<br/>' .. not_implemented or ''))
	end, 

	-- l10n handler if needed.
	['ru'] = function(name, linkName, id)
		return (name == '') and na or ('[[' .. tr.translateLink(linkName, lang) .. '|' .. tr.translate(name, lang) .. ']]'
			-- unimplemented items that have pages
			.. (idSets.getValue('Unused', id) and '<br/>' .. not_implemented or ''))
	end, 

	-- more ...	
	-- ['fr'] = function(name, linkName, id)
	-- 	return (name == '') and na or ('[[' .. tr.translateLink(linkName, lang) .. '|' .. tr.translate(name, lang) .. ']] ('..name..')')
	-- end, 

}


local function row(id)
	local name = getNames('itemNameFromId', id) or ''
	return tag('tr', {}, table.concat({
		tag('td', {}, id),
		tag('td', {}, (nameCell.lang or nameCell.en)(name, replaceName[id] or name, id)),
		tag('td', {}, tag('code', {}, getNames('itemInternalNameFromId', id) or none))
	}))
end

return {

	go = function(frame)
		lang = frame.args.lang
		na = frame.args.na
		none = frame.args.none
		not_implemented = frame.args.not_implemented
		
		for k,v in pairs(mw.af.import( frame.args.links )) do 
			replaceName[tonumber(string.sub(k, 2))] = v
		end
		
		local result = {}
		for i = info.IDs.min, info.IDs.max do
			result[#result + 1] = row(i)
		end
		return table.concat(result)
	end,
}