
Użycie
[edytuj kod]Ten meta-moduł (biblioteka) upraszcza obsługę błędów w innych modułach. Przekształca funkcję, która może zgłaszać błąd, w funkcję, która w takim przypadku zwraca określony komunikat o błędzie.
Moduł został skopiowany z enwiki w kwietniu 2025 roku [1] na potrzeby Moduł:Template test case.
Instrukcja
[edytuj kod] local protect = require('Module:Protect')
local protectedFunc = protect(func, errFormat, options)
Argumenty
[edytuj kod]func
- Funkcja do przekształcenia.
(domyślnie:errFormat
)'Error: %s'
- Własny komunikat błędu.
- Użyj
, aby uwzględnić treść przechwyconego błędu.'%s'
– opcjonalna tabela z poniższymi polami:options
(domyślnie: false)raw
- Jeśli ustawione na true,
zostanie użyty bez zmian, w przeciwnym razie zostanie opakowany w znacznikerrFormat
<strong class="error">
.
- Jeśli ustawione na true,
(domyślnie: true)removeLocation
- Jeśli ustawione na true, usuwa informacje o lokalizacji z przechwyconych komunikatów o błędach.
Wartość zwracana
[edytuj kod]Wynikowy
to funkcja, która wywołuje oryginalną funkcję protectedFunc
, przekazując jej wszystkie argumenty i zwracając wszystkie jej wartości zwrotne. Jeśli func
zgłosi błąd, zamiast tego zwracany jest określony komunikat o błędzie.
func
Przykład
[edytuj kod]local protect = require('Module:Protect')
local p = {}
function p.main(frame)
if not frame.args[1] then
error('missing argument')
end
return frame.args[1]
end
p.main = protect(p.main)
return p
Wywołanie funkcji głównej bez argumentów da wynik: Error: missing argument
Błędy
[edytuj kod]Błędy należy zgłaszać na stronie Wikipedia:Kawiarenka/Kwestie techniczne.
Zobacz też
[edytuj kod]
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