Modul:param

Hej, du har kommit hit för att leta efter betydelsen av ordet Modul:param. I DICTIOUS hittar du inte bara alla ordboksbetydelser av ordet Modul:param, utan du får också veta mer om dess etymologi, dess egenskaper och hur man säger Modul:param i singular och plural. Allt du behöver veta om ordet Modul:param finns här. Definitionen av ordet Modul:param hjälper dig att vara mer exakt och korrekt när du talar eller skriver dina texter. Genom att känna till definitionen avModul:param och andra ord berikar du ditt ordförråd och får tillgång till fler och bättre språkliga resurser.

Dokumentation för denna modul finns på /dok (redigera), /test


Syfte

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

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 {=2,"temperatur","tryck","nocat"}, heltal i elementet 0 definierar maximalt antal anonyma parametrar

Resultat

Alltid string 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

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