Modul:param
Hoppa till navigering
Hoppa till sök
Dokumentation för denna modul finns på/dok(redigera),/test
Syfte
[redigera]Detekterar icke-uppskattade parametrar skickade till mallar, både anonyma/numrerade och namngivna. Kan anropas enbart från moduler, inte direkt från mallar.
Parametrar
[redigera]Tvåtable
tabeller:
- innehållande parametrar inkommande till mallen, till exempel rakt kopierad från
frame:getParent().args
- lista över parametrar tillåtna för mallen, till exempel
{[0]=2, "temperatur", "tryck", "nocat" }
,heltal i elementet 0 definierar maximalt antal anonyma parametrar
Resultat
[redigera]Alltidstring
sträng:
- tom betyder OK
- icke-tom betyder fel, listar upptäckta oönskade parametrar, till exempel
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
localexporttbl={}
localfunctioncontains(tbl,val)
forl,winipairs(tbl)do
ifw==valthen
returntrue
end
end--for
returnfalse
end--function
functionexporttbl.go(tbl_incoming,tbl_permitted)
localcomplaint=""
localnumbered_parameters=0
localunallowed_parameters=0
localfunctionproblem(guilty_value)-- uses upvalues
if(unallowed_parameters<3)then
iftype(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[0]-- ZERO value permitted
tbl_permitted[0]=nil
fork,vinpairs(tbl_incoming)do
iftype(k)=="number"then
ifk>numbered_parametersthen
problem(k)
end
else
ifnotcontains(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
returncomplaint
end--function
returnexporttbl