Modul:Sandkasse/PHansen/Fhold
Udseende
local p = {}
--[[ Feb-2015
* Idé : kun én skabelon til de forskellige landshold: mænd og kvinder, voksne og unge (21, 19 osv.)
* Oplæg : Wikipedia-diskussion:WikiProjekt_Fodbold#Ny_skabelon
* De allerede eksisterende separate skabeloner i F-serien er:
* A : {{tl|F}} - A-landshold hos herrerne -- {{tl|Fk}} - A-landshold hos kvinderne
* U : {{tl|FU}} - U-landshold hos herrerne -- {{tl|FkU}} - U-landshold hos kvinderne
* 'Fhold' : F for Fodbold - 'hold' : de nationale fodboldhold for mænd og kvinder, voksne og unge (21, 19 osv.)
* Testmodul: Modul:Sandkasse/PHansen/Fhold --- Testsandkasse: Bruger:PHansen/Fhold
* Skabelonen kalder modulet med:
* {{#invoke:Sandkasse/PHansen/Fhold|main|1={{{1|}}}|2={{{2|}}}|3={{{3|}}} }}
* Med skabelontitel 'Fhold' anvendes: {{Fhold|land|køn|alder}} og muligvis {{Fhold|land|alder|køn}}
--]]
function p.main ( frame )
-- De tre parametre ('args') fra skabelonen (arbejdstitel: 'Fhold': {{Fhold|land|køn|alder}} )
local land = frame.args[1]
local sex = frame.args[2] -- 'køn' virker ikke i softwaren
local alder = frame.args[3]
-- arg2 og arg3 bruges af hensyn den kontraintuitive situation ved brug af rækkefølgen land - alder - køn
-- Ved 'kompatibilitet' med F og FU kan 'sex' også indeholde et tal
-- NB "... argument values passed from #invoke are always strings. ..." - det nødvendiggør typechecking
local arg2 = frame.args[2] -- behøver typecheking ved tal for ungdomshold, F og FU
local arg3 = frame.args[3]
local done = false
local result = ""
local error_msg = '<span class="error"><small>Brug {{Fhold|land|køn|alder}} - Se [[Skabelon:Fhold]]</small></span>'
local error_vejl = '<span class="error"><small>Se [[Skabelon:Fhold]] for detaljer (land|køn|alder eller land|alder|køn)</small></span>'
local error_bund = '<span class="error"><small>Ingen løsning fundet</small></span>'
local error_oldboys = '<span class="error"><small>Old Boys skal have sin første artikel som model at formatere efter></span>'
local error_girls = '<span class="error"><small>Old Girls skal have sin første artikel som model at formatere efter></span>'
--Nogle mulige fejl
-- 'land' er nødvendig
if land == nil or land == "" or land == "m" or land == "k" then -- Virker vist ikke : or land == "[0-9]" then
-- er vist ikke helt sikker ? -- Se på: or land == "[0-9]"
-- NB "... argument values passed from #invoke are always strings. ..."
done = true
return ( error_msg )
end -- Nogle mulige fejl: 'land' er nødvendig
-- Hvis 'land' var OK, så fortsæt:
-- Bagudkompatibel ? - Et par stykker som forsøg på at gøre den bagudkompatibel med F og FU
-- Den allerede eksisterende Skabelon:F - Forsøg på at lave en indgang som 'den eksisterende skabelon' F, der kun havde 'land' som parameter
if done == false and ( land ~= "" and (sex == "" and alder == "") ) then
-- var: [[{{{1}}}s fodboldlandshold|{{{1}}}]] (- i den separate skabelon [[Skabelon:F]])
result = "[[" .. land .. "s" .. " " .. "fodboldlandshold" .. "|" .. land .. "]]"
done = true
return result
end -- kun land - dvs. som den gamle skabelon F - mænd, voksne
-- Som den allerede eksisterende Skabelon:FU der er 'mænd, ungdom' - fx {{Fhold|land|alder}}
-- mænd AND ungdom (alder angivet som ANDEN parameter : 21, 19 osv.)
-- NB hold tungen lige i munden
-- if sex ~= "" then -- skifter til arg2 for ikke at forvirre for meget
if done == false and ( land ~= "" and (arg2 ~= "" and alder == "") ) then
-- NB hold tungen lige i munden
-- Problemet er nu at der skal være et tal i parameteren 'arg2' for at give som FU
-- NB "... argument values passed from #invoke are always strings. ..."
if type( tonumber( arg2 ) ) == 'number' then -- så er det et ungdomshold for mænd -- typechecking
-- var: [[{{{1}}}s U/{{{2}}}-fodboldlandshold|{{{1}}} U/{{{2}}}]] (- i den separate skabelon [[Skabelon:FU]])
result = "[[" .. land .. "s" .. " U/" .. arg2 .. "-fodboldlandshold" .. "|" .. land .. " U/" .. arg2 .. "]]"
done = true
return result
end -- typechecking
end -- mænd, ungdom efter som den allerede eksisterende Skabelon:FU der er 'mænd, ungdom'
-- |land|alder|køn -- forsøg med {{Fhold|land|alder|køn}} - der bruges arg2 og arg3
if done == false and ( land ~= "" and (arg2 ~= "" and arg3 ~= "") ) then
-- NB hold tungen lige i munden
-- Problemet er nu at der skal være et tal i parameteren 'arg2' for at give som FU
-- NB "... argument values passed from #invoke are always strings. ..."
if type( tonumber( arg2 ) ) == 'number' then -- så er det et ungdomshold for mænd -- typechecking
-- var: [[{{{1}}}s U/{{{2}}}-fodboldlandshold|{{{1}}} U/{{{2}}}]] (- i den separate skabelon [[Skabelon:FU]])
-- result = "[[" .. land .. "s" .. " U/" .. arg2 .. "-fodboldlandshold" .. "|" .. land .. " U/" .. arg2 .. "]]"
-- 1) mænd arg3 == 'm'
if arg3 == 'm' then
result = "[[" .. land .. "s" .. " U/" .. arg2 .. "-fodboldlandshold" .. "|" .. land .. " U/" .. arg2 .. "]]"
done = true
return result
end -- land alder mænd
-- 2) kvinder arg3 == 'k'
if arg3 == 'k' then
result = "[[" .. land .. "s" .. " U/" .. arg2 .. "-kvindefodboldlandshold" .. "|" .. land .. " U/" .. arg2 .. "]]"
done = true
return result
end -- land alder kvinder
-- done = true
-- return result
end -- typechecking
end -- |land|alder|køn
-- .. videre med rækkefølgen land - køn - alder --- (den anden er land - alder - køn)
-- mænd AND voksne (ingen alder angivet)
if done == false and (sex == "m" and alder == "") then -- test af tilføjelse med done == false
-- var: [[{{{1}}}s fodboldlandshold|{{{1}}}]] (- i den separate skabelon [[Skabelon:F]])
result = "[[" .. land .. "s" .. " " .. "fodboldlandshold" .. "|" .. land .. "]]"
done = true
return result
end -- mænd, voksne med rækkefølgen land - køn
-- kvinder AND voksne (ingen alder angivet)
if done == false and (sex == "k" and alder == "") then
-- var: [[{{{1}}}s kvindefodboldlandshold|{{{1}}}]] (- i den separate skabelon [[Skabelon:Fk]])
result = "[[" .. land .. "s" .. " " .. "kvindefodboldlandshold" .. "|" .. land .. "]]"
done = true
return result
end -- kvinder, voksne med rækkefølgen land - køn
--beg: Old Boys og Old Girls
-- mænd AND Old Boys (alder angivet som 'old' i 3.parameter)
if done == false and (sex == "m" and alder == "old" ) then
-- var: [[{{{1}}}s U/{{{2}}}-fodboldlandshold|{{{1}}} U/{{{2}}}]] (- i den separate skabelon [[Skabelon:FU]])
-- result = "[[" .. land .. "s" .. " U/" .. alder .. "-fodboldlandshold" .. "|" .. land .. " U/" .. alder .. "]]"
-- result = ..mangler model at formatere efter
-- [[Danmarks fodboldlandshold for seniorer|Danmark /Old]]
result = "[[" .. land .. "s" .. " fodboldlandshold for seniorer" .. "|" .. land .. " /Old" .. "]]"
done = true
return result -- ( error_oldboys )
end -- mænd, Old Boys med rækkefølgen land - køn - alder
-- kvinder AND Old Girls (alder angivet som 'old' i 3.parameter)
if done == false and (sex == "k" and alder == "old") then
-- var: [[{{{1}}}s U/{{{2}}}-kvindefodboldlandshold|{{{1}}} U/{{{2}}}]] (- i den separate skabelon [[Skabelon:FkU]])
-- result = "[[" .. land .. "s" .. " U/" .. alder .. "-kvindefodboldlandshold" .. "|" .. land .. " U/" .. alder .. "]]"
-- result = ..mangler model at formatere efter
-- [[Danmarks kvindefodboldlandshold for seniorer|Danmark /Old]]
result = "[[" .. land .. "s" .. " kvindefodboldlandshold for seniorer" .. "|" .. land .. " /Old" .. "]]"
done = true
return result -- ( error_oldgirls )
end -- kvinder, Old Girls med rækkefølgen land - køn - alder
--slut: Old Boys og Old Girls
-- mænd AND ungdom (alder angivet som TREDJE parameter : 21, 19 osv.)
if done == false and (sex == "m" and alder ~= "" ) then
-- var: [[{{{1}}}s U/{{{2}}}-fodboldlandshold|{{{1}}} U/{{{2}}}]] (- i den separate skabelon [[Skabelon:FU]])
result = "[[" .. land .. "s" .. " U/" .. alder .. "-fodboldlandshold" .. "|" .. land .. " U/" .. alder .. "]]"
done = true
return result
end -- mænd, ungdom (alder angivet 21, 19 osv.) med rækkefølgen land - køn - alder
-- kvinder AND ungdom (alder angivet 21, 19 osv.)
if done == false and (sex == "k" and alder ~= "") then
-- var: [[{{{1}}}s U/{{{2}}}-kvindefodboldlandshold|{{{1}}} U/{{{2}}}]] (- i den separate skabelon [[Skabelon:FkU]])
result = "[[" .. land .. "s" .. " U/" .. alder .. "-kvindefodboldlandshold" .. "|" .. land .. " U/" .. alder .. "]]"
done = true
return result
end -- kvinder, ungdom (alder angivet 21, 19 osv.) med rækkefølgen land - køn - alder
-- Blev bunden nået uden resultat ?
if done == false then
return ( error_msg )
end -- blev bunden nået uden resultat ?
end -- function p.main ( frame )
return p -- export table