Módulo:Protect
Aspeto
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.
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}}
_pageName='{{#replace:{{PAGENAME}}|'|\'}}'
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