Dokumentation för denna modul finns på /dok (redigera), /test
Detekterar icke-uppskattade parametrar skickade till mallar, både anonyma/numrerade och namngivna. Kan anropas enbart från moduler, inte direkt från mallar.
Två table
tabeller:
frame:getParent().args
{=2,"temperatur","tryck","nocat"}
, heltal i elementet 0 definierar maximalt antal anonyma parametrarAlltid string
sträng:
parametrar "hastighet=" och 3 (anonym)
, begränsat till maximalt 3 stycken, kan och ska användas för att generera ett produktivt felmeddelande-- check for unallowed parameters, returns string, empty if OK
-- NOT usable directly from templates
local exporttbl = {}
local function contains (tbl, val)
for l,w in ipairs(tbl) do
if w == val then
return true
end
end--for
return false
end--function
function exporttbl.go (tbl_incoming, tbl_permitted)
local complaint = ""
local numbered_parameters = 0
local unallowed_parameters = 0
local function problem (guilty_value) -- uses upvalues
if (unallowed_parameters<3) then
if type(guilty_value)=="number" then
guilty_value = tostring(guilty_value) .. ' (anonym)'
else
guilty_value = '"' .. guilty_value .. '="'
end--if
if (unallowed_parameters~=0) then
complaint = complaint .. ' och '
end--if
complaint = complaint .. guilty_value
unallowed_parameters = unallowed_parameters + 1
end--if
end--function
numbered_parameters = tbl_permitted -- ZERO value permitted
tbl_permitted = nil
for k,v in pairs(tbl_incoming) do
if type(k)=="number" then
if k > numbered_parameters then
problem (k)
end
else
if not contains(tbl_permitted, k) then
problem (k)
end
end--if
end--for
if (unallowed_parameters==1) then
complaint = "parameter " .. complaint
end--if
if (unallowed_parameters>=2) then
complaint = "parametrar " .. complaint
end--if
return complaint
end--function
return exporttbl