Modul:param

Definition från Wiktionary, den fria ordlistan.
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åtabletabeller:

  • innehållande parametrar inkommande till mallen, till exempel rakt kopierad frånframe: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]

Alltidstringsträng:

  • tom betyder OK
  • icke-tom betyder fel, listar upptäckta oönskade parametrar, till exempelparametrar "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