NOB[mi ez?] • [dokumentáció: mutat, szerkeszt] • [tesztek: létrehozás]

local NOB = {}

function NOB.adatok(frame)
--A NOB.adatok az összes sablonnál használt, általános adatokat hívja be, ezt a többi funkció behívja --
--SABLON BEHÍVÁSOK
zaszlo = frame:expandTemplate{ title = 'Nemzeti zászló ' .. NOBkod  .. ' NOB-kóddal', args = { ev, tipuskod } }
nemzetnev = frame:expandTemplate{ title = 'Nemzetnév ' .. NOBkod  .. ' NOB-kóddal', args = { ev } }
--nevelo = frame:expandTemplate{ title = 'Nemzetnevek névelővel NOB-kóddal', args = { NOBkod , ev, tipuskod } }
--NOBkod = frame:expandTemplate{ title = 'Nemzetek régi NOB-kódjai' , args = { ev, NOBkod , tipuskod } }

--ÉVSZÁM NÉVELŐJE
evTrim = mw.text.trim( ev )
first = mw.ustring.sub(evTrim, 1, 1) -- évszám első karaktere
length = mw.ustring.len(evTrim) -- évszám hossza (karakterek száma)
if  first == '5' or (length==4 and first == '1') then
    evnevelo = 'az'
    else
    evnevelo = 'a'
end
if tonumber(evTrim) == nil -- évszám további használata számformátumban
	then ev = 0
	else
	ev = tonumber(evTrim)
end 
--NÉVELŐK LISTA
nevelo = {
--AFRIKA
['COM'] = 'A', --Comore-szigetek
['COD'] = 'A', --Kongói Demokratikus Köztársaság
['RAU'] = 'Az', --Egyesült Arab Köztársaság
['CGO'] = 'A', --Kongói Köztársaság
['CAF'] = 'A', --Közép-afrikai Köztársaság
['SEY'] = 'A', --Seychelle-szigetek
['CPV'] = 'A', --Zöld-foki Köztársaság
--AMERIKA
['USA'] = 'Az Amerikai', --Egyesült Államok
['ISV'] = 'Az', --Amerikai Virgin-szigetek
['BAH'] = 'A', --Bahama-szigetek
['IVB'] = 'A', --Brit Virgin-szigetek
['DMA'] = 'A', --Dominikai Közösség
['DOM'] = 'A', --Dominikai Köztársaság
['AHO'] = 'A', --Holland Antillák
['CAY'] = 'A', --Kajmán-szigetek
--ÁZSIA
['UAE'] = 'Az', --Egyesült Arab Emírségek
['PHI'] = 'A', --Fülöp-szigetek
['MDV'] = 'A', --Maldív-szigetek
--EURÓPA
['BOH'] = 'A', --Cseh Királyság
['EUA'] = 'Az', --Egyesült Német Csapat
['GDR'] = 'Az', --NDK
['FRG'] = 'Az', --NSZK
['SAA'] = 'A', --Saar-vidék
['URS'] = 'A', --Szovjetunió
--ÓCEÁNIA
['COK'] = 'A', --Cook-szigetek
['FIJ'] = 'A', --Fidzsi-szigetek
['MHL'] = 'A', --Marshall-szigetek
['SOL'] = 'A', --Salamon-szigetek
--EGYÉB
['EUN'] = 'Az', --Egyesített Csapat
['ZZX'] = 'A' --Nemzetközi Csapat
}
if nevelo[NOBkod] == nil then 
    nevelo =''
else
    nevelo = nevelo[NOBkod] .. ' '
end
if NOBkod == 'RSA' then if ev == 1904 or ev == 1908 then nevelo = '' -- Fokföld
    else nevelo='A ' end end -- Dél-afirkai Köztársaság
if NOBkod == 'ROC' then if ev == 1964 or ev == 1968 then nevelo = '' -- Tajvan (1964, 1968)
elseif ev == 2020 or ev == 2022 then --  Orosz Olimpiai Bizottság (2020)
	nevelo = 'Az '
else nevelo='A ' end end -- Kínai Köztársaság
if NOBkod == 'COD' then if ev == 1984 or ev == 1988 or ev == 1992 or ev == 1996 then nevelo = '' -- Zaire
    else nevelo='A ' end end -- A Kongói Demokratikus Köztársaság
--TÍPUSOK
if tipuskod == 'nyári' then
    tipus = 'nyári olimpiai játékokon'
    elseif tipuskod == 'téli' then
    tipus = 'téli olimpiai játékokon'
    elseif tipuskod == 'nyári ifjúsági' then
    tipus = 'nyári ifjúsági olimpiai játékokon'
    elseif tipuskod == 'téli ifjúsági' then
    tipus = 'téli ifjúsági olimpiai játékokon'
    elseif tipuskod == 'nyári paralimpiai' then
    tipus = 'nyári paralimpiai játékokon'
    elseif tipuskod == 'téli paralimpiai' then
    tipus = 'téli paralimpiai játékokon'
    elseif tipuskod == 'Európa' then
    tipus = 'Európa-játékokon'
    else
    tipus = 'nyári olimpiai játékokon'
end
if tipuskod == 'nyári' or tipuskod == 'téli' then
    tipus2 = 'az olimpiai játékokon'
    elseif tipuskod == 'nyári ifjúsági' or tipuskod == 'téli ifjúsági' then
    tipus2 = 'az ifjúsági olimpiai játékokon'
    elseif tipuskod == 'nyári paralimpiai' or tipuskod == 'téli paralimpiai' then
    tipus2 = 'a paralimpiai játékokon'
    elseif tipuskod == 'Európa' then
    tipus2 = 'az Európa-játékokon'
    else
    tipus2 = 'az olimpiai játékokon'
end
--RÉGI NOB-KÓDOK
--Holland Antillák
if NOBkod  == 'AHO' then
    if ev == 1960 then NOBkod = 'ATO' end
    if ev == 1964 then NOBkod = 'NAN' end end
--Algéria
if NOBkod  == 'ALG' then
    if ev == 1964 then NOBkod = 'AGR' end
    if ev == 1968 and tipuskod == 'nyári' then NOBkod = 'AGL' end end
--Bosznia-Hercegovina
if NOBkod  == 'BIH' and ev == 1992 then NOBkod = 'BSH' end
--Belize
if NOBkod  == 'BIZ' and (ev >= 1968 and ev <=1972) then NOBkod = 'HBR' end
--Közép-Afrikai Köztársaság
if NOBkod  == 'CAF' and ev == 1968 then NOBkod = 'AFC' end
--Kambodzsa
if NOBkod  == 'CAM' then
    if ev == 1964 then NOBkod = 'CAB' end
    if (ev >= 1972 and ev <=1976) then NOBkod = 'KHM' end end
--Csád
if NOBkod  == 'CHA' then
    if ev == 1964 then NOBkod = 'CHD' end
    if ev == 1968 then NOBkod = 'TCH' end end
--Chile
if NOBkod  == 'CHI' and ((ev == 1956 and tipuskod == 'téli')
                        or (ev == 1960 and tipuskod == 'nyári')) then NOBkod = 'CIL' end
--Elefántcsontpart
if NOBkod  == 'CIV' then
    if ev == 1964 then NOBkod = 'IVC' end
    if ev == 1968 then NOBkod = 'CML' end end
--Kongói Demokratikus Köztársaság 
if NOBkod  == 'COD' then
	if ev == 1968 then NOBkod = 'COK' end
	if ev >= 1984 and ev <= 1996 then NOBkod = 'ZAI' end end
--Costa Rica
if NOBkod  == 'CRC' then
    if ev == 1964 then NOBkod = 'COS' end
    if ev == 1984 and tipuskod == 'téli' then NOBkod = 'CTC' end end
--Dánia
if NOBkod  == 'DEN' then
    if ((ev == 1960 and tipuskod == 'nyári')
        or (ev == 1968 and tipuskod == 'téli')) then NOBkod = 'DAN' end
    if ev == 1968 and tipuskod == 'nyári' then NOBkod = 'DIN' end end
--Salvador
if NOBkod  == 'ESA' and (ev >= 1968 and ev <=1972) then NOBkod = 'SAL' end
--Egyesült Arab Köztársaság
if NOBkod  == 'RAU' and ev == 1964 then NOBkod = 'UAR' end
--Spanyolország
if NOBkod  == 'ESP' and ((ev >= 1956 and ev <=1964)
                        or (ev == 1968 and tipuskod == 'téli')) then NOBkod = 'SPA' end
--Etiópia
if NOBkod  == 'ETH' and (ev >= 1960 and ev <=1968) then NOBkod = 'ETI' end
--Fidzsi-szigetek
if NOBkod  == 'FIJ' and ev == 1960 then NOBkod = 'FIG' end
--Nagy-Britannia
if NOBkod  == 'GBR' then
    if ((ev == 1956 and tipuskod == 'téli') or ev == 1960) then NOBkod = 'GRB' end
    if ev == 1964 then NOBkod = 'GBI' end end
--Guyana
if NOBkod  == 'GUY' then
                    if ev == 1960 then NOBkod = 'GUA' end
                    if ev == 1964 then NOBkod = 'GUI' end end
--Hongkong
if NOBkod  == 'HKG' and (ev >= 1960 and ev <=1968) then NOBkod = 'HOK' end
--Magyarország
--if NOBkod  == 'HUN' and ((ev == 1956 and tipuskod == 'téli')
                          --or ev == 1960) then NOBkod = 'UNG' end
--Indonézia
if NOBkod  == 'INA' and ev == 1960 then NOBkod = 'INS' end
--Irán
if NOBkod  == 'IRI' then
    if ev == 1968 and tipuskod == 'téli' then NOBkod = 'IRA' end
    if (ev == 1968 and tipuskod == 'nyári') or ev == 1976 or ev == 1988 then NOBkod = 'IRN' end end
--Irak
if NOBkod  == 'IRQ' and (ev == 1960 or ev ==1968) then NOBkod = 'IRK' end
--Izland
if NOBkod  == 'ISL' and ((ev == 1960 or ev ==1964) and tipuskod == 'téli') then NOBkod = 'ICE' end
--Japán
if NOBkod  == 'JPN' then
    if ((ev == 1956 and tipuskod == 'téli') or (ev == 1960 and tipuskod == 'nyári')) then NOBkod = 'GIA' end
    if ev == 1960 and tipuskod == 'nyári' then NOBkod = 'JAP' end end
--Dél-Korea
--Szaúd-Arábia
if NOBkod  == 'KSA' then
    if (ev == 1972 or ev == 1976) then NOBkod = 'ARS' end
    if ev == 1984 then NOBkod = 'SAU' end end
--Libanon
if NOBkod  == 'LIB' and ((ev == 1960 and tipuskod == 'téli')
                        or (ev == 1964 and tipuskod == 'nyári')) then NOBkod = 'LEB' end
--Litvánia
if NOBkod  == 'LTU' and ev == 1992 then NOBkod = 'LIT' end
--Malajzia
if NOBkod  == 'MAS' and (ev >= 1956 and ev <=1988) then NOBkod = 'MAL' end
--Mongólia
if NOBkod  == 'MGL' and ev == 1968 and tipuskod == 'téli' then NOBkod = 'MON' end
--Mianmar
if NOBkod  == 'MYA' then
    if ev >= 1948 and ev <=1988 then NOBkod = 'BIR' end -- 1964 esetén az alsó felülírja
    if ev == 1964 then NOBkod = 'BUR' end end
--Nicaragua
if NOBkod  == 'NCA' then
    if ev == 1964 then NOBkod = 'NCG' end
    if ev == 1968 then NOBkod = 'NIC' end end
--Hollandia
if NOBkod  == 'NED' and (ev >= 1900 and ev <=1988) then NOBkod = 'HOL' end
--Fülöp-szigetek
if NOBkod  == 'PHI' and (ev == 1964 or ev ==1968) then NOBkod = 'FIL' end
--Pápua Új-Guinea
if NOBkod  == 'PNG' then
    if ev == 1976 then NOBkod = 'NGY' end
    if (ev == 1980 or ev ==1984) then NOBkod = 'NGU' end end
--Puerto Rico
if NOBkod  == 'PUR' then
    if ev == 1960 then NOBkod = 'PRI' end
    if ev == 1968 then NOBkod = 'PRO' end end
--Románia
if NOBkod  == 'ROU' then
    if (ev >= 1960 and ev <=2006) then NOBkod = 'ROM' end
    if (ev == 1964 or ev ==1968) then NOBkod = 'RUM' end
end
--Dél-Afrika
if NOBkod  == 'RSA' and (ev >= 1900 and ev <=1960) then NOBkod = 'SAF' end
--Srí Lanka
if NOBkod  == 'SRI' and (ev >= 1948 and ev <=1972) then NOBkod = 'CEY' end
--Szerbia és Montenegró-->
if NOBkod  == 'SCG' and (ev == 1996 or ev ==2000) then NOBkod = 'YUG' end
--Szíria
if NOBkod  == 'SYR' and ev == 1968 then NOBkod = 'SIR' end
--Thaiföld
if NOBkod  == 'THA' and (ev == 1960 or ev ==1968) then NOBkod = 'TAI' end
--Uruguay
if NOBkod  == 'URU' and ev == 1968 then NOBkod = 'URG' end
--Vietnam
if NOBkod  == 'VIE' then
    if ev == 1964 then NOBkod = 'VET' end
    if ev >= 1968 and ev <=1976 then NOBkod = 'VNM' end end
--NOB-KÓDOK VÉGE

--Egyedi nemzetnevek
if NOBkod == 'ROC' and (ev == 2020 or ev == 2022) then
    utotag =' versenyzői'
    else
    utotag =''	
end

--KIMENETELEK
    zaszlo = '[[Kép:' .. zaszlo .. '|22x20px|border|' .. nemzetnev .. ']]'
    szocikk1 = nevelo .. ' ' .. nemzetnev .. utotag .. ' ' .. evnevelo .. ' '.. ev .. '. évi ' .. tipus
    szocikk2 = nevelo .. ' ' .. nemzetnev .. utotag .. ' ' .. tipus2
    --ifexist kivételek
    --AMI BIZTOSAN LÉTEZIK
    --ÉV SZERINT
    if
        (ev >=1960 and ev <=2024 and tipuskod == 'nyári') -- nyári 1972 és 2024 között
        or (ev == 1896 and tipuskod == 'nyári') -- nyári 1896
        --típusonként
        or (ev <= 2022 and tipuskod == 'téli') -- téli 1924 és 2022 között
    --EGYEDIEK
        or (ev == 2024 and NOBkod == 'AIN') -- AIN (Független résztvevők) 2024 nyári
        or (ev >= 2020 and NOBkod == 'ROC') -- ROC (Orosz Olimpiai Bizottság) 2020 nyári, 2022 téli
        or (ev == 2018 and NOBkod == 'OAR') -- OAR (Oroszország) 2018 téli
        or (ev == 2018 and NOBkod == 'COR') -- COR (Korea) 2018 téli
    --NEMZETEK SZERINT
        or (NOBkod == 'HUN' and ev> 0 ) -- Magyarország
        --kivételek 1900 és 1936 között
        or (NOBkod == 'LUX' and (ev>=1924 and ev<=1936)) -- Luxemburg 1924 és 1936 között
        --kivételek 1908 és 1920 között
        or (NOBkod == 'ARG' and (ev>=1908 and ev<=1920)) -- Argentína 1908 és 1920 között
        then szocikk = szocikk1
    --AMI BIZTOSAN NEM LÉTEZIK
    elseif
        (ev == 0) -- ha NOB, vagy NOBcsapatnál nincs megadva évszám
     or ((tipuskod == 'nyári') and -- nyáriak
           (ev >=1900 and ev <= 1948 and NOBkod  == 'GRE')
        or (ev ==1956 and NOBkod  == 'GRE')
        or (ev >=1900 and ev <= 1948 and NOBkod  == 'USA')
        or (ev ==1956 and NOBkod  == 'USA')
        or (ev >=1952 and ev <= 1956 and NOBkod  == 'URS')
        or (ev >=1900 and ev <= 1936)) -- mindegyik 1900 és 1936 között
        then szocikk = szocikk2
    else
    --IFEXIST-HÍVÁS
        szocikk = frame:preprocess( '{{#ifexist: ' .. szocikk1 .. '|' .. szocikk1 .. '|' .. szocikk2 .. '}}' ) 
    end
end

-- zászlóNOB2 - csak zászló --
function NOB.zaszlo(frame)
    NOBkod  = frame.args[1]
    ev = frame.args[2]
    tipuskod = frame.args[3]
    NOB.adatok(frame) -- adatok behívása
return '&nbsp;' .. zaszlo
end

-- zászlóNOBj --
function NOB.zaszloNOBj(frame)
    NOBkod  = frame.args[1]
    ev = frame.args[2]
    tipuskod = frame.args[3]
    NOB.adatok(frame) -- adatok behívása
    return '[[' .. szocikk .. '|' .. nemzetnev .. ']]&nbsp;' .. zaszlo
end

-- zászlóNOB --
function NOB.zaszloNOB(frame)
   NOBkod  = frame.args[1]
   ev = frame.args[2]
   tipuskod = frame.args[3]
   sportolokadat = tonumber(frame.args[4])
   ferfiadat = tonumber(frame.args[5])
   noiadat = tonumber(frame.args[6])
    NOB.adatok(frame) -- adatok behívása
    
    -- sportolók száma --
    if sportolokadat == nil then
        osszessportolo = tonumber(0)
    else
        osszessportolo = sportolokadat
    end
    if ferfiadat == nil then
        ferfisportolo = tonumber(0)
    else
        ferfisportolo = ferfiadat
    end
    if noiadat == nil then
        noisportolo = tonumber(0)
    else
        noisportolo = noiadat
    end
    -- if-ek --
if osszessportolo == 0 then
    sportolok = ''
    else
    if ferfisportolo == 0 and noisportolo == 0 then
    sportolok = '(' .. osszessportolo .. ')'
    else
    if ferfisportolo + noisportolo ~= osszessportolo then
    sportolok = '(<big><b>HIBA!</b></big>)[[Kategória:Hibásan használt zászlóNOB sablont tartalmazó lapok]]'
        else
        if ferfisportolo > 0 then
            if noisportolo > 0 then
            sportolok = '(' .. osszessportolo .. ' – ' .. ferfisportolo .. ' férfi, ' .. noisportolo .. ' nő)'
            else
            sportolok = '(' .. osszessportolo .. ' – ' .. ferfisportolo .. ' férfi)'
            end
        else
        if noisportolo > 0 then
        sportolok = '(' .. osszessportolo .. ' – ' .. noisportolo .. ' nő)'
        else
        end
        end
    end
    end
end
if sportolokadat == '?' or sportolokadat == nil or sportolokadat == 0 then
    sportolokszama = ''
else
    sportolokszama = '&nbsp;<span style="font-size:90%;">(' .. NOBkod .. ') ' .. sportolok .. '</span>'
end
return zaszlo .. '&nbsp;[[' .. szocikk .. '|' .. nemzetnev .. ']]' .. sportolokszama
end

-- zászlóNOBérmes --
function NOB.zaszloNOBermes(frame)
    ermes = frame.args[1]
    NOBkod  = frame.args[2]
    ev = frame.args[3]
    tipuskod = frame.args[4]
    NOB.adatok(frame) -- adatok behívása
return zaszlo .. '&nbsp;' .. ermes .. '<br /><i>' .. '[[' .. szocikk .. '|' .. nemzetnev .. ']]&nbsp;<span style="font-size:90%;">(' .. NOBkod .. ')</span></i>'
end

-- zászlóNOBcsapat --
function NOB.zaszloNOBcsapat(frame)
    NOBkod  = frame.args[1]
    ev = frame.args[2]
    tipuskod = frame.args[3]
    csapat = frame.args[4]
    NOB.adatok(frame) -- adatok behívása
    if frame.args[4] == '0' then csapat = '' else csapat = '<br />' .. frame.args[4] end
    return zaszlo .. '&nbsp;[[' .. szocikk .. '|' .. nemzetnev .. ']]&nbsp;<span style="font-size:90%;">(' .. NOBkod .. ')</span>' .. csapat
end

-- zászlóNOBsportoló --
function NOB.zaszloNOBsportolo(frame)
	local Args = frame.args
	local oldal = Args['oldal'] or 'b'
    sportolo = frame.args[1]
    NOBkod  = frame.args[2]
    ev = frame.args[3]
    tipuskod = frame.args[4]
    NOB.adatok(frame) -- adatok behívása
    if sportolo == '[[]]' and NOBkod == '???' then
    return zaszlo
	else
		if oldal == 'j' then
		return sportolo .. '&nbsp;<span style="font-size:90%;">([[' .. szocikk .. '|' .. NOBkod .. ']])</span>&nbsp;' .. zaszlo
		else
		return zaszlo .. '&nbsp;' .. sportolo .. '&nbsp;<span style="font-size:90%;">([[' .. szocikk .. '|' .. NOBkod .. ']])</span>'
		end
	end
end

-- zászlóNOBvál sablonok --
-- mindkettőre érvényes adatok --
function NOB.zaszloNOBvaladatok(frame)
     sport = frame.args[1]
     valogatott = frame.args['vál']
     NOBkod  = frame.args[2]
     ev = frame.args[3]
     tipuskod = frame.args[4]
    NOB.adatok(frame) -- adatok behívása
    melleknev = frame:expandTemplate{ title = 'ZászlóNOBvál/melléknevek', args = { frame.args[2]} }
        if valogatott ~= nil then
           valogatottcikk = valogatott
        else
        if sport ~= nil then
        	--Kikeressük a 'válogatott' elé kerülő sportágat jelölő szócskat, es meghatározzuk a szótagszámát
        	--Ugyanis 6 szótagszám alatt mindenképpen egybe kell írni a 'válogatott'-tal. (pl. rögbiválogatott)
        	sportSzavak = mw.text.split(sport, " ", true)
        	prefixValogatott = sportSzavak[table.maxn(sportSzavak)]
        	_, szotagszam=mw.ustring.gsub(prefixValogatott, "[AÁEÉIÍOÓÖŐUÚÜŰaáeéiíoóöőuúüű]", "")
        	
        	-- A 'válogatott' szó 4 szótagú tehát ha a prefix 2 szótagnál nem több, akkor egybeírjuk
        	if szotagszam <= 2 then
				valogatottcikk = melleknev .. ' ' .. sport .. 'válogatott'
			else
				valogatottcikk = melleknev .. ' ' .. sport .. '-válogatott'
			end
        else
        end
    end
end

-- zászlóNOBvál - bal oldali zászlós --
function NOB.zaszloNOBval(frame)
    NOB.zaszloNOBvaladatok(frame)
return zaszlo .. '&nbsp;[[' .. valogatottcikk .. '|' .. nemzetnev .. ']] <span style="font-size:90%;">([[' .. szocikk .. '|' .. NOBkod .. ']])</span>'
end

-- zászlóNOBvál - jobb oldali zászlós --
function NOB.zaszloNOBvalj(frame)
    NOB.zaszloNOBvaladatok(frame)
return '[[' .. valogatottcikk .. '|' .. nemzetnev .. ']] <span style="font-size:90%;">([[' .. szocikk .. '|' .. NOBkod .. ']])</span>&nbsp;' .. zaszlo
end

return NOB