Ir para o conteúdo

Módulo:Protect

De DropWiki PoE 2
Revisão de 21h08min de 29 de janeiro de 2025 por 2804:7f0:b342:7285:2d1e:1c01:abfd:fada (discussão) (Criou página com 'local function processResult(options, success, ...) if not success then local message = tostring(... or '(no message)') if options.removeLocation then message = string.gsub(message, '^Module:[^:]+:%d+: ', '', 1) end return string.format(options.errFormat, message) end return ... end local function protect(func, errFormat, options) if type(errFormat) == 'table' then options = options or errFormat errFormat = nil end options = mw.clone(options) or {}...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)


This módulo was adapted from Módulo:Protect on Wikipedia.
Adaptation is noted for reference and attribution only. This módulo may differ from the original in function or in usage.

This metamodule simplifies error handling in other modules. It transforms a function, which may throw an error, into a function, which returns a specified error message in that case.


Usage

{{#invoke:Protect|function_name}}


local function processResult(options, success, ...)
	if not success then
		local message = tostring(... or '(no message)')
		if options.removeLocation then
			message = string.gsub(message, '^Module:[^:]+:%d+: ', '', 1)
		end
		return string.format(options.errFormat, message)
	end
	return ...
end

local function protect(func, errFormat, options)
	if type(errFormat) == 'table' then
		options = options or errFormat
		errFormat = nil
	end
	options = mw.clone(options) or {}
	options.errFormat = errFormat or options.errFormat or 'Error: %s'
	if not options.raw then
		options.errFormat = '<strong class="error">' .. options.errFormat .. '</strong>'
	end
	options.removeLocation = options.removeLocation == nil or options.removeLocation
	
	return function (...)
		return processResult(options, pcall(func, ...))
	end
end

return protect