Module:CallAssert
Εμφάνιση
Τεκμηρίωση module[προβολή] [επεξεργασία] [ιστορικό] [ανανέωση]
Αυτό το metamodule παρέχει τη συνάρτηση callAssert, η οποία απλοποιεί τον έλεγχο σφαλμάτων με την εμφάνιση ενός σφάλματος εάν μια δεδομένη συνάρτηση επιστρέψει μηδενική ή ψευδής. Αυτό είναι παρόμοιο με το ενσωματωμένο assert συνάρτησης, αλλά σε αντίθεση με αυτό, το ίδιο το callAssert καλεί τη συνάρτηση, της οποίας η τιμή επιστροφής πρέπει να ελεγχθεί. Αυτό της επιτρέπει να συμπεριλάβει το όνομα της συνάρτησης και τις τιμές ορίσματος στο μήνυμα σφάλματος.
Χρήση
[επεξεργασία κώδικα]local callAssert = require('Module:CallAssert')
local result1, result2, etc = '''callAssert(''func'', {{'}}''funcName''{{'}}, ...)'''
Η callAssert
καλεί την func(...)
και ελέγχει εάν η πρώτη επιστρεφόμενη τιμή αξιολογείται ως true. Εάν το κάνει, τότε επιστρέφει όλες τις επιστρεφόμενες τιμές. Εάν όχι, εκπέμπει ένα σφάλμα με ένα μήνυμα με μορφή 'funcName(argument_values) failed'
Δείτε επίσης
[επεξεργασία κώδικα]local function pack(...)
return {...}, select('#', ...)
end
local function mapArray(func, array, count)
local result = {}
for i = 1, count or #array do
result[i] = func(array[i])
end
return result
end
local function quote(value)
if type(value) == 'string' then
return (string.gsub(string.format('%q', value), '\\\n', '\\n')) -- Outer parentheses remove second value returned by gsub
end
local str = tostring(value)
if type(value) == 'table' and str ~= 'table' then
return '{' .. str .. '}'
end
return str
end
local function callAssert(func, funcName, ...)
local result, resultCount = pack(func(...))
if not result[1] then
local args, argsCount = pack(...)
args = mapArray(quote, args, argsCount)
local message = mw.ustring.format(
'%s(%s) failed',
funcName,
table.concat(args, ', ')
)
error(message, 2)
end
return unpack(result, 1, resultCount)
end
return callAssert