Jump to content

Module:Deprecated

විකිපීඩියා වෙතින්
13:31, 8 අප්‍රේල් 2025 වන විට IDB.S (සාකච්ඡාව | දායකත්ව) (IDB.S මගින් සිදුකල 739798 සංශෝධනය අහෝසි කරන්න (සාකච්ඡා)) විසින් සිදු කර ඇති සංශෝධන

--- Marks functions as deprecated, and provides a warning when they are called.
-- @release alpha
-- @author [[User:Awesome_Aasim|Awesome Aasim]]
-- @function deprecated
-- @param {table} p package frame
-- @param deprecatedTable 
-- @return package

return function(p, deprecatedTable, replacement)
	local pckg = {}
	--- Warn
	-- @param {string} text warning text
	function warn(text)
		local tb = debug.traceback()
		mw.log(text .. '\n' .. tb)
		mw.addWarning(text .. tb:gsub("\n", "<br/>"):gsub("\t", "&emsp;"))
	end
	if deprecatedTable == nil or deprecatedTable == true then
		deprecatedTable = {}
		for k,_ in pairs(p) do
			deprecatedTable[k] = {
				deprecated = true,
				replacement = replacement or ""
			}
		end
	end
	setmetatable(pckg, {
		__index = function(t, index)
			if deprecatedTable[index] and deprecatedTable[index]["deprecated"] then
				warn(
					mw.ustring.format(
						"Deprecated member <code>%s</code> called. ", index
					) .. (
						deprecatedTable[index]["replacement"]
						and mw.ustring.format("Please %s instead.", deprecatedTable[index]["replacement"])
						or ''
					)
				)
			end
			return p[index]
		end
	})
	return pckg
end
"https://si.wikipedia.org/w/index.php?title=Module:Deprecated&oldid=739943" වෙතින් සම්ප්‍රවේශනය කෙරිණි