Module:Focus

可在Module:Focus/doc创建此模块的帮助文档

-------------------------------------------------------------------------------
-- 
--                                 Module:Focus
-- 
-- This module implements Template:Focus.
-------------------------------------------------------------------------------

local p = {};

local tagSet = {
	generic = {dlc = "generic"}, warlord = {dlc = "generic"}, hoa = {dlc = "generic"},
	ast = {dlc = "tfv"}, can = {dlc = "tfv"}, saf = {dlc = "tfv"}, raj = {dlc = "tfv"}, nzl = {dlc = "tfv"},
	cze = {dlc = "dod"}, hun = {dlc = "dod"}, yug = {dlc = "dod"}, rom = {dlc = "dod"},
	ger = {dlc = "wtt"}, jap = {dlc = "wtt"}, chi = {dlc = "wtt"}, prc = {dlc = "wtt"}, man = {dlc = "wtt"},
	usa = {dlc = "mtg"}, eng = {dlc = "mtg"}, hol = {dlc = "mtg"}, mex = {dlc = "mtg"},
	fra = {dlc = "lar"}, spr = {dlc = "lar"}, spa = {dlc = "lar"}, por = {dlc = "lar"}, vic = {dlc = "lar"}, fre = {dlc = "lar"},
	tur = {dlc = "bftb"}, gre = {dlc = "bftb"}, bul = {dlc = "bftb"},
	sov = {dlc = "nsb"}, pol = {dlc = "nsb"}, est = {dlc = "nsb"}, lat = {dlc = "nsb"}, lit = {dlc = "nsb"}, baltic = {dlc = "nsb"},
	ita = {dlc = "bba"}, swi = {dlc = "bba"}, eth = {dlc = "bba"},
	den = {dlc = "aat"}, swe = {dlc = "aat"}, nor = {dlc = "aat"}, fin = {dlc = "aat"}, ice = {dlc = "aat"}, nordic = {dlc = "aat"},
	arg = {dlc = "toa"}, bra = {dlc = "toa"}, chl = {dlc = "toa"}, par = {dlc = "toa"}, urg = {dlc = "toa"}, smb = {dlc = "toa"}, guay = {dlc = "toa"},
};

local chinese_warlords = {
	gxc = {}, shx = {}, sik = {}, xsm = {}, yun = {},
};

local hoa_nations = {
	afa = {}, beg = {}, gba = {}, har = {}, oro = {}, gem = {}, sid = {}, tig = {},
};

function p.main(frame)
	local args = frame.args
	local aTag = args['tag']

	--Check tag
	if chinese_warlords[aTag] then --Set chinese warlords tag to "warlord"
		aTag = "warlord"
	elseif hoa_nations[aTag] then --Set horn of africa countries tag to "hoa"
		aTag = "hoa"
	elseif not tagSet[aTag] then
		return "<span style=\"color: red; font-size: 11px;\">(unrecognized TAG \"" .. aTag .. "\" for [[Template:Focus]])</span>[[Category:Pages with unrecognized focus strings]]"
	end

	--Load only 1 module at a time (One page per dlc)
	local dlcPage = "Module:Focus/" .. tagSet[aTag].dlc
	local tag = mw.loadData(dlcPage)[aTag]

	--Check id
	if not tag[args['id']] then
		return "<span style=\"color: red; font-size: 11px;\">(unrecognized id \"" .. args['id'] .. "\" in TAG \"" .. aTag .. "\" for [[Template:Focus]])</span>[[Category:Pages with unrecognized focus strings]]"
	end

	local id = tag[args['id']]

	local page = ""
	if id.continuous then
		page = "Continuous focus"
	elseif id.shared then
		page = tag.shared_page
	elseif id.joint then
		page = tag.joint_page
	else
		page = tag.page
	end

	--icon
	local icon = ""
	if args.icon ~= nil and args.icon ~= "" then
		icon = args.icon
	elseif type(id.icon) == "table" then
		args.iconid = tonumber(args.iconid)
		if id.icon[args.iconid] then
			icon = id.icon[args.iconid]
		else --Fallback value (default) if out of range
			icon = id.icon[1]
		end
	else
		icon = id.icon
	end
	

	local ic = string.format("[[File:%s.png|%s|%s|link=", icon, id.name, args['size'])
	if args['link'] == "yes" then
		ic = ic .. page
		if id.subtree ~= nil then
			ic = ic .. id.subtree
		end
	end
	if id.replaceName == nil then
		ic = ic .. "#" .. id.name
	else
		ic = ic .. "#" .. id.replaceName
	end
	if id.dup_name ~= nil then
		ic = ic .. " " .. id.dup_name
	end
	ic = ic .. "]]"

	--text
	local name = ""
	if args.text ~= nil and args.text ~= "" then
	    name = args.text
	else
	    name = id.name
	end

	local tx = name 
	if args['link'] == "yes" then
		tx = "[[" .. page
		if id.subtree ~= nil then
			tx = tx .. id.subtree
		end
		if id.replaceName == nil then
			tx = tx .. "#" .. id.name
		else
			tx = tx .. "#" .. id.replaceName
		end
		if id.dup_name ~= nil then
			tx = tx .. " " .. id.dup_name
		end
		tx = tx .. "|" .. name .. "]]"
	end

	return ic .. tx
end

return p