Page skrivebeskyttet

Modul:Tjek for ukendte parametre

Fra Wikipedia, den frie encyklopædi
Spring til navigation Spring til søgning
Documentation icon Moduldokumentation[vis] [redigér] [historik] [opfrisk]
Ambox warning orange.svg
Dette Lua-modul bliver brugt på 112.798 sider.
For at undgå store forstyrrelser og unødvendigt pres på serverne, bør alle ændringer af modulet først afprøves i dens tilhørende /sandkasse eller /test-undersider. De færdigafprøvede ændringer kan derefter overføres til denne side ved en enkelt redigering. Overvej venligst at diskutere alle ændringer på diskussionssiden før du implementerer dem.

Dette modul kan indsættes i skabelonkoden for at tjekke om ukendte parametre bliver anvendt blandt de sider, der benytter skabelonen.

Brug

{{#invoke:Tjek for ukendte parametre|check
|unknown=[[Kategori:Navn på ønsket sporingskategori|_VALUE_|ignoreblank=ja]]
|arg1|arg2|...|argN}}

Her er arg1, arg2, ..., argN de kendte parametre. Enhver parameter der er brugt, men ikke befinder sig i denne liste, vil få modulet til at tilføje siden til den angivne sporingskategori. Værdien _VALUE_ vil blive erstattet med navnet på den ukendte parameter. Dette er praktisk, fordi det vil sortere siderne i kategorien baseret på den ukendte parameters navn. På den måde kan man nemmere finde frem til den ukendte parametre, fordi man kender parameterens begyndelsesbogstav.

Som regel ønsker man ikke at medtage ukendte parametre som er blanke (uden værdi). Dette kan undgås ved at tilføje parameteren |ignoreblank=ja.

Eksempel

Eksempel med skabelonkode med kun fire parametre

{{Infoboks 
| above = {{{navn|}}}

| label1 = Højde
| data1 = {{{height|}}}

| label2 = Vægt
| data2 = {{{vægt|}}}

| label3 = Hjemmeside
| data3 = {{{website|}}}
}}<!-- 
  slut på selve skabelonen
-->{{#invoke:Tjek for ukendte parametre|check
| unknown = [[Kategori:Navn på ønsket sporingskategori|_VALUE_]]
| ignoreblank = ja
| navn | højde| vægt | website }}

Et tip

Hvis skabelonen indeholder mange kendte parametre, kan det være upraktisk at skulle skrive deres navne ind manuelt. I stedet kan man skaffe en liste over parametrene ved at vælge knappen Manage TemplateData, der kommer frem øverst på siden når man i skabelonen klikker på "Rediger wikikode". Listen kommer frem når man trykker "Add xxx suggested parameters". Når listen er kopieret til et tekstdokument, siger man "Cancel", så Templatedata ikke gemmes. I tekstdokumentet erstatter man samtlige kommaer med |, inden listen kopieres ind i skabelonkoden på det rigtige sted forklaret oven for.

Skabeloner der bruger dette modul

Et par af de skabeloner der i øjeblikket anvender modulet:

Skabeloner der anvender "Modul:Tjek for ukendte parametre"
Skabelon Sporingskategori
{{Infoboks Wikidata person}} Category:Sider med ukendte parametre i Infoboks Wikidata person ( 69 )
{{Infoboks skuespiller}} Category:Sider med ukendte parametre i Infoboks skuespiller ( 66 )

-- This module may be used to compare the arguments passed to the parent
-- with a list of arguments, returning a specified result if an argument is
-- not on the list
local p = {}

local function isnotempty(s)
	return s and s:match( '^%s*(.-)%s*$' ) ~= ''
end

function p.check (frame)
	local args = frame.args
	local pargs = frame:getParent().args
	local ignoreblank = isnotempty(frame.args['ignoreblank'])
	local checkpos = isnotempty(frame.args['checkpositional'])
	local knownargs = {}
	local unknown = 'Found _VALUE_, '

	local res = {}
	local comments = {}
	local commentstr = ''
	
	-- create the list of known args, and the return string
	for k, v in pairs(args) do
		if type(k) == 'number' then
			v = mw.ustring.gsub(v, '^%s*(.-)%s*$', '%1')
			knownargs[v] = 1
		else
			if (k == 'unknown' and type(v) == 'string') then
				unknown = v
			end
		end
	end

	-- loop over the parent args, and make sure they are on the list
	for k,v in pairs(pargs) do
		if (type(k) == 'string' and knownargs[k] == nil) then
			if( (not ignoreblank) or (ignoreblank and isnotempty(v)) ) then
				k = mw.ustring.gsub(k, '[^%w\-_ ]', '?')
				local r = mw.ustring.gsub(unknown, '_VALUE_', k)
				table.insert(res, r)
				table.insert(comments, '"' .. k .. '"')
			end
		elseif(checkpos and type(k) == 'number' and knownargs[tostring(k)] == nil) then
			if( (not ignoreblank) or (ignoreblank and isnotempty(v)) ) then
				local r = mw.ustring.gsub(unknown, '_VALUE_', k)
				table.insert(res, r)
				table.insert(comments, '"' .. k .. '"')
			end
		end
	end

	if(#comments > 0) then
		commentstr = '<!-- Module:Check for unknown parameters results: ' ..
			table.concat(comments, ', ') .. '-->'
	end
	
	return table.concat(res) .. commentstr
end

return p