Jump to content

Module:PageRef

From Deadlock Wiki
Revision as of 17:44, 28 November 2024 by Sur (talk | contribs) (if the icon doesn't exist at all, return blank from get_file_name)

Documentation for this module may be created at Module:PageRef/doc

local p = {}
local lang_module = require("Module:Lang")
local heroes_data = mw.loadJsonData("Data:HeroData.json")
local hero_keys = {}
for key, _ in pairs(heroes_data) do
    table.insert(hero_keys, key)
end
local heroes_data = nil --free memory


local function is_hero(resource_name_localized) 
	for _, hero_key in ipairs(hero_keys) do
		if lang_module.get_string(hero_key) == resource_name_localized then
			return true
		end
	end
	return false
end

-- Generates appropriate filename from resource_name_localized
p.get_file_name = function(frame)
	local resource_name_localized = frame.args[1]
	local alt_file_name = frame.args[2]
	
	--alt_file_name is optional; if not provided, assume resource_name_localized is correct
	if alt_file_name ~= nil and alt_file_name ~= '' then
		file_name = alt_file_name
	else
		--Determine the filename to use
		--Heroes use <hero_name>_MM.ext
		--Items use <item_name>.ext
		--Abilities use <ability_name>.ext
		if is_hero(resource_name_localized) then
			file_name = resource_name_localized .. "_MM"
		--elseif is_item(resource_name_localized) then
			--file_name = resource_name_localized .. ""
		--elseif is_ability(resource_name_localized) then
			--file_name = resource_name_localized .. ""
		else
			file_name = resource_name_localized
		end
	end
	-- Prefix with File namespace
	file_name = "File:" .. file_name
	
	-- Try to grab SVG if possible
	local svg_file_name = file_name .. ".svg"
	local png_file_name = file_name .. ".png"
	if mw.title.new(svg_file_name).exists then
		file_name = svg_file_name
	elseif mw.title.new(png_file_name).exists then
		file_name = png_file_name
	else
		file_name = ""
	end
	
	return file_name
end

return p