Bước tới nội dung

Mô đun:Storm categories

Bách khoa toàn thư mở Wikipedia
local categoryData = require("Module:Storm categories/categories")local colors = require("Module:Storm categories/colors").colorslocal icons = require("Module:Storm categories/icons").iconslocal cats = categoryData.catslocal defaultCategory = categoryData.defaultCategorylocal p = {}function p.color(frame)	return p._color(frame.args[1] or frame:getParent().args[1], false)endfunction p.name(frame)	return p._name(		frame.args[1] or frame:getParent().args[1],		frame.args[2] or frame:getParent().args[2],		false	)endfunction p.sortkey(frame)	return p._sortkey(frame.args[1] or frame:getParent().args[1], false)endfunction p.icon(frame)	return p._icon(frame.args[1] or frame:getParent().args[1], false)endfunction p.isEqual(frame)	return p._isEqual(		frame.args[1] or frame:getParent().args[1],		frame.args[2] or frame:getParent().args[2]	) and "yes" or ""endfunction p._normalizeId(category, fallback)	-- Normalize if normalizable, fall back to default if not.	return (category ~= nil and string.len(category) ~= 0) and		string.gsub(string.lower(category), "[^%w]", "") or fallbackendfunction p._color(category, nilIfMissing)	-- This looks confusing, but it's actually nested ternaries (for nil checks)	local color = p._normalizeId(category, defaultCategory)			return colors[color] or ((cats[color] or (		nilIfMissing		and { color = nil }		or cats[defaultCategory]	)).color)endfunction p._name(category, basin, nilIfMissing)	local name_def = (cats[		p._normalizeId(category, defaultCategory)	] or (nilIfMissing and { name = nil } or cats[defaultCategory])).name	return type(name_def) == "table" and 		(			name_def[string.lower(basin or "default")]			or name_def["default"]			or (not nilIfMissing and error("No default name for basin-based category name.") or nil)		) 		or name_defendfunction p._sortkey(category, nilIfMissing)	-- This looks confusing, but it's actually nested ternaries (for nil checks)	return (cats[		p._normalizeId(category, defaultCategory)	] or (nilIfMissing and { sortkey = nil } or cats[defaultCategory])).sortkeyendfunction p._icon(category, nilIfMissing)	-- This looks confusing, but it's actually nested ternaries (for nil checks)	local icon = p._normalizeId(category, defaultCategory)			return icons[icon] or (cats[icon] ~= nil and (		cats[icon].icon or cats["tropicalcyclone"].icon	) or (not nilIfMissing and cats[defaultCategory].icon) or nil)endfunction p._isEqual(category1, category2)	-- Checks if two IDs are equal.	-- An {{#ifeq}} check does not consider aliases. This function compares two	-- IDs in a way that considers category aliases. This works because alias	-- assignments are references to the actual table containing the category	-- info found in the main category table.	-- 	-- `false` will be returned if at least one of the categories are nil or	-- if the category is not defined.	local _category1 = p._normalizeId(category1)	local _category2 = p._normalizeId(category2)	return (_category1 == _category2 and _category1 ~= nil) or		cats[ _category1 ] == cats[ _category2 ] and			-- `false` if categories are undefined and not equal.			cats[ _category1 ] ~= nilendfunction p.demo(frame)	return require("Module:Storm categories/demo").demo(frame)endreturn p