„Modul:CitPer” változatai közötti eltérés

Tartalom törölve Tartalom hozzáadva
KeFe (vitalap | szerkesztései)
Új oldal, tartalma: „--Version 2014_09_24 local ds =require("Modul:Dátumszűrés") local lang = mw.getContentLanguage() ou = '' function pop(mi,mv1,mv2,mv3,mv4,mv5) -- idézőjeles r…”
 
frissítés a Wikipédiáról
 
1. sor:
--Version 2014_09_24
local ds =require("'Modul:Dátumszűrés"No globals')
local ds = require('Modul:Dátumszűrés')
 
local langargs = mw.getContentLanguage() {}
local used_args = {}
local config = {}
local lang = mw.getContentLanguage()
 
local ou = ''
local function pop(mi,mv1,mv2,mv3,mv4,mv5...) -- idézőjeles rész és 5 bővítménybővítmények az ou számára
--[[ memóriatúllépést okoz, csak teszteléshez
if not mi then return else ou = ou..mi..'\n ' end
local list = {...}
if not mv1 then return else ou = ou..mv1..'\n' end
for _, var in pairs(list) do
if not mv2 then return else ou = ou..mv2..'\n' end
if not mv3 then return else ou = ou ..mv3 tostring(var) .. '\n' end'
mw.log(ou)
if not mv4 then return else ou = ou..mv4..'\n' end
end
if not mv5 then return else ou = ou..mv5..'\n' end
]]
end
function val_to_str(v)
if type(v) == 'string' then
v = mw.ustring.gsub(v, '\n', '\\n')
if mw.ustring.match(mw.ustring.gsub(v, '[^\'"]', ''), '^"+$') then
return "'" .. v .. "'"
end
return '"' .. mw.ustring.gsub(v, '"', '\\"' ) .. '"'
else
return type(v) == 'table' and table_to_str(v) or tostring(v)
end
end
 
local hibavan = false
local hiba_jelzes = {}
kategorizalas_van = false
local kategorizalas_van = false
 
local function error(kategorizalas_kell,about about)
-- Enclose errorMsg with <span>
-- Precondition:
-- about -- string
hibavan = true
if kategorizalas_kell then
kategorizalas_van = true
end
local r = about
if type( about ) == "'string"' then
if #about == 0 then
r = 'Lua-hiba'
r = "Error in Lua"
end
else
r = tostring( about )
end
table.insert(hiba_jelzes, return "'<span class=\'"error\'>">' .. r .. "'</span>, "')
end
-- "<span class=\'error\'><font color=\"red\">" ..' ('.. r..') ' .. "</font></span>, "
-- "<small><font color=\"black\">" ..' ('.. r..') ' .. "</font></small> "
-- "<span class=\'error\'><font color=\"black\"><small>" .. r .. "</small></font></span>, "
end -- error()
 
local function trimisRoman(strv)
if type(v) ~= if str.args'string' then
-- A római számok stringek
str = str.args[1]
return false
end
end
if str == nil then
if v:find('[^IVXLCDM]') then
return nil
return false
else
end
return (str:gsub("^%s*(.-)%s*$", "%1")) -- extra brackets are necessary because gsub returns multiple values
end
end
 
local function isArabic(v)
 
if type(v) ~= 'string' then
function isRoman(v)
if type(v) ~= 'string' then return false end -- római számok is stringek
return false
for i = 1,string.len(v) do -- végig a stringen
end
j, l = string.find ("IVXLCDM",string.sub(v,i,i)) -- az i-edik római?
return (tonumber(v) ~= nil)
if j == nil then return false end
end --do ciklus, lejárt, tehát minden karakter római számnak felel meg
return true
end
 
local rovidhonapnev={}function toRoman(num)
if num < 0 or num > 9999 then
rovidhonapnev["jan"] = "jan."
return -1
rovidhonapnev["feb"] = "feb."
end
rovidhonapnev["már"] = "márc."
local romanOnes = {'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'}
rovidhonapnev["ápr"] = "ápr."
local romanTens = {'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'}
rovidhonapnev["máj"] = "máj."
local romanHund = {'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'}
rovidhonapnev["jún"] = "jún."
local romanThou = {'M', 'MM', 'MMM', 'MMMM', 'MMMMM', 'MMMMMM', 'MMMMMMM', 'MMMMMMMM', 'MMMMMMMMM'}
rovidhonapnev["júl"] = "júl."
rovidhonapnev["aug"] = "aug."
rovidhonapnev["sze"] = "szept."
rovidhonapnev["okt"] = "okt."
rovidhonapnev["nov"] = "nov."
rovidhonapnev["dec"] = "dec."
local decimal={}
decimal['I'] =1
decimal['II'] =2
decimal['III'] =3
decimal['V'] =5
decimal['VI'] =6
decimal['VII'] =7
decimal['VIII'] =8
decimal['IX'] = 9
decimal['X'] = 10
decimal['XI'] = 11
decimal['XII'] = 12
 
local ones = num % 10
function romantodecimal(v)
local tens = (num - ones) % 100
if type(v) ~= 'string' then return nil end -- ha nem string, nilt ad visssza
local hund = (num - tens - ones) % 1000
local n = decimal[v]
local thou = (num - hund - tens - ones) % 10000
return n
 
tens = tens / 10
hund = hund / 100
thou = thou / 1000
 
local romanNum = ''
if thou > 0 then romanNum = romanNum .. romanThou[thou] end
if hund > 0 then romanNum = romanNum .. romanHund[hund] end
if tens > 0 then romanNum = romanNum .. romanTens[tens] end
if ones > 0 then romanNum = romanNum .. romanOnes[ones] end
return romanNum
end
local function isISSN( str)
local v,chsum,chnum,chd,i,j,chnumdo
if #str>9 then str= string.sub(str,1,9) end -- csak az első 9 marad, többi ignorálva
v=''
for w in string.gmatch(str, "%d") do
v=v..w
end
v=string.sub(v,1,7) --
chd = string.sub (str,-1,-1); -- check digit az utólsó
if chd == 'X' or isArabic(chd) then
if chd == 'X' then chnum = 10 else chnum = string.byte(chd,1) - string.byte('0',1) end
else
return false
end
chsum = 0
for j = 8,2,-1 do
local elsbyte = string.byte(v,(9 - j))
chsum = chsum + (elsbyte - string.byte('0',1)) * j
end -- j ciklus
if chsum % 11 == 0 then chnumdo=0 else chnumdo = 11 - (chsum % 11) end
if chnumdo == chnum then return true else return false end
end -- isISSN
 
local function isISSN(str)
local v, chsum, chnum, chd, i, chnumdo
 
v = str:gsub('[^%dX]', '')
if #v < 8 then
return false
elseif #v > 8 then
-- csak az első 9 marad, többi ignorálva
v = v:sub(1, 8)
end
chd = v:sub(-1, -1) -- check digit az utolsó
v = v:sub(1, 7)
 
function if chd == 'X' or isArabic(vchd) then
if chd == 'X' then
if type(v) ~= 'string' then return false end -- számok is stringek
chnum = 10
-- az i-arab számjegy?
else
if tonumber(v) == nil then return false else return true end
chnum = string.byte(chd, 1) - string.byte('0', 1)
end
else
return false
end
chsum = 0
for i = 8, 2, -1 do
local elsbyte = string.byte(v, 9-i)
chsum = chsum + (elsbyte - string.byte('0', 1)) * i
end
 
if chsum % 11 == 0 then
chnumdo = 0
else
chnumdo = 11 - (chsum % 11)
end
return (chnumdo == chnum)
end
 
local function getArgMain(names, le, suffix)
for _, v in ipairs(names) do
if suffix then
v = v .. tostring(suffix)
end
used_args[v] = true
if args[v] and args[v] ~= '' then
if le and type(args[v]) == 'string' then
-- lecsípjük az utolsó pontot vagy vesszőt
return args[v]:gsub('[%.,]$', '')
else
return tostring(args[v])
end
end
end
return nil
end
 
local function getArg(le, ...) -- itt eredetileg a frame nem paraméter
local lans={}
-- Retrieve template argument
-- Precondition:
lans["an"] = "van"
-- le: true értékkel jelzi, hogy levágható a paraméter végéről a felesleges vessző és pont
lans["ar"] = "van"
-- ...: paraméternevek, az első megadott és nem üreset adja vissza
lans["aze"] = "van"
lans["be"] = "van"
lans["bg"] = "van"
lans["bn"] = "van"
lans["bs"] = "van"
lans["ca"] = "van"
lans["chm"] = "van"
lans["cy"] = "van"
lans["cs"] = "van"
lans["da"] = "van"
lans["de"] = "van"
lans["ee"] = "van"
lans["el"] = "van"
lans["en"] = "van"
lans["eo"] = "van"
lans["es"] = "van"
lans["et"] = "van"
lans["eu"] = "van"
lans["fa"] = "van"
lans["fi"] = "van"
lans["fo"] = "van"
lans["fr"] = "van"
lans["fy"] = "van"
lans["ga"] = "van"
lans["gd"] = "van"
lans["gl"] = "van"
lans["grc"] = "van"
lans["gu"] = "van"
lans["he"] = "van"
lans["hi"] = "van"
lans["hr"] = "van"
lans["ht"] = "van"
lans["hu"] = "van"
lans["hy"] = "van"
lans["hz"] = "van"
lans["id"] = "van"
lans["is"] = "van"
lans["it"] = "van"
lans["ja"] = "van"
lans["jp"] = "van"
lans["ka"] = "van"
lans["kk"] = "van"
lans["km"] = "van"
lans["kn"] = "van"
lans["ko"] = "van"
lans["ku"] = "van"
lans["ky"] = "van"
lans["lat"] = "van"
lans["lb"] = "van"
lans["lo"] = "van"
lans["lit"] = "van"
lans["lv"] = "van"
lans["mk"] = "van"
lans["mn"] = "van"
lans["mo"] = "van"
lans["ms"] = "van"
lans["mt"] = "van"
lans["my"] = "van"
lans["ne"] = "van"
lans["nl"] = "van"
lans["nn"] = "van"
lans["no"] = "van"
lans["oc"] = "van"
lans["pa"] = "van"
lans["pl"] = "van"
lans["pt"] = "van"
lans["rm"] = "van"
lans["ro"] = "van"
lans["ru"] = "van"
lans["rue"] = "van"
lans["sa"] = "van"
lans["sah"] = "van"
lans["scn"] = "van"
lans["se"] = "van"
lans["sh"] = "van"
lans["sk"] = "van"
lans["slo"] = "van"
lans["sm"] = "van"
lans["sq"] = "van"
lans["sr"] = "van"
lans["sv"] = "van"
lans["tam"] = "van"
lans["te"] = "van"
lans["tet"] = "van"
lans["tg"] = "van"
lans["th"] = "van"
lans["tk"] = "van"
lans["tag"] = "van"
lans["to"] = "van"
lans["tr"] = "van"
lans["tat"] = "van"
lans["ty"] = "van"
lans["uk"] = "van"
lans["ur"] = "van"
lans["uz"] = "van"
lans["vi"] = "van"
lans["yi"] = "van"
lans["zh"] = "van"
 
return getArgMain({...}, le)
toRoman =function ( num)
end
if ( num < 0 or num > 9999) then return -1 end
local romanOnes = {}
local romanTens = {}
local romanHund = {}
local romanThou = {}
romanOnes = {"I","II","III","IV", "V", "VI", "VII", "VIII", "IX"}
romanTens = { "X","XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}
romanHund = {"C","CC","CCC","CD","D","DC","DCC","DCCC","CM"}
romanThou = {"M","MM","MMM","MMMM","MMMMM","MMMMMM","MMMMMMM","MMMMMMMM",
"MMMMMMMMM"}
ones = num % 10
tens = ( num - ones) % 100
hund = ( num - tens - ones) % 1000
thou = ( num - hund - tens - ones) % 10000
tens = tens / 10
hund = hund / 100
thou = thou / 1000
romanNum = ''
if ( thou > 0) then romanNum = romanNum .. romanThou[ thou] end
if ( hund > 0) then romanNum = romanNum .. romanHund[ hund] end
if ( tens > 0) then romanNum = romanNum .. romanTens[ tens] end
if ( ones > 0) then romanNum = romanNum .. romanOnes[ ones] end
return romanNum
end
 
local function getArgMore(le, max, ...)
local ret = {}
local val = getArg(le, ...)
if val then
table.insert(ret, val)
end
for i = 2, max do
val = getArgMain({...}, le, i)
if val then
table.insert(ret, val)
end
end
return ret
end
 
local function checkArgs()
for n, v in pairs(args) do
if not used_args[n] then
local msg = 'CitPer: Nem használt paraméter: ' .. n
mw.log(msg)
mw.addWarning(msg)
kategorizalas_van = true
end
end
end
 
local function getConf(conf)
local function getArg(le,arg,alternativarg, assign ) -- itt eredetileg a frame nem paraméter
local v = config[conf]
-- Retrieve template argument
return (v ~= '' and v) or nil
-- Precondition:
-- le true értékkel jelzi, hogy levágható a paraméter végéről a felesleges vessző és pont
-- arg -- string or number; argument identifier
-- alternativarg -- a paraméternek a másik neve
-- assign -- any, optional; default value
local r1 = args[ arg ]
local r2 = nil
if alternativarg ~= nil then r2 = args[ alternativarg ] end
if r1 == '' or r1 ==nil then r = r2 else r = r1 end
if r == '' then r = nil end
if type( r ) ~= "string" then
if type( assign ) == nil then
r = "{{{<" .. arg .. ">}}}" --ha r nem string tipus, azaz és assign nil érték
else
r = assign -- ha r nem string tipus, és assign nem nil
end
else -- r típusa string
if #r > 1 then -- ha r strint típus és legalább két karaktert tartalmaz
local utso_karakter = string.sub(r,-1,-1);
if le then
if utso_karakter == '.' or utso_karakter == ',' then r=string.sub(r,1,-2) end --lecsípjük az utólsó pontot, vagy vesszőt
end
end
end
return r
end
 
local function urlencode(str)
local function getConf(conf,alternativconf, assign ) -- itt eredetileg a frame nem paraméter
-- URL kódolása
-- Retrieve template argument
do return str end
-- Precondition:
return (str
-- le true értékkel jelzi, hogy levágható a paraméter végéről a felesleges vessző és pont
:gsub('%s', '%%20')
-- arg -- string or number; argument identifier
:gsub('"', '%%22')
-- alternativarg -- a paraméternek a másik neve
:gsub("'", '%%27')
-- assign -- any, optional; default value
:gsub('<', '%%3c')
:gsub('>', '%%3e')
local r1 = config[ conf ]
:gsub('%[', '%%5b')
local r2 = nil
:gsub('%]', '%%5d')
if alternativconf ~= nil then r2 = config[ alternativconf ] end
:gsub('{', '%%7b')
if r1 == '' or r1 ==nil then r = r2 else r = r1 end
:gsub('|', '%%7c')
if r == '' then r = nil end
:gsub('}', '%%7d')
if type( r ) ~= "string" then
)
if type( assign ) == nil then
r = "{{{<" .. conf .. ">}}}" --ha r nem string tipus, azaz és assign nil érték
else
r = assign -- ha r nem string tipus, és assign nem nil
end
else -- r típusa string
end
return r
end
 
local function _citper(frame)
local alkategoriak = {}
hibavan, kategorizalas_van = false, false
local hiba_jelzes=' '
hiba_jelzes = {}
local honapok = {"jan.","feb.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."}
used_args = {}
local szerzo, szerzo2, szerzo3, cim, alcim, periodika, ev,ho,nap, evfolyam, szam, oldal = nil
ou = ''
local issn, doi, misc, url, nyelvkod,accd,arurl,archd =nil
local honapok = {'jan.', 'feb.', 'márc.', 'ápr.', 'máj.', 'jún.', 'júl.', 'aug.', 'szept.', 'okt.', 'nov.', 'dec.'}
local aut,aut2,aut3,tit,subtit,per,ann,lun,die,tom,fasc,pag,misc,volume,lan,nyelv,accd,aurl,archd, outdatum =nil
local aut, tit, subtit, per, ann, lun, die, datum, tom, fasc, vol, pag
local alkategoriak_kellenek=getConf('alkategóriák kellenek')
local issn, doi, misc, url, lan, accd, aurl, archd, outdatum
--pop("Kellenek az alkategóriák??", alkategoriak_kellenek) -- igen, vagy nem a lehetséges válasz
if alkategoriak_kellenek then
if alkategoriak_kellenek == 'igen' then
--pop("Kellenek az alkategóriák", alkategoriak_kellenek)
alkategoriak_kellenek=true
else alkategoriak_kellenek=false
end
end
local sablon_kimenetek_kellenek=getConf('sablon kimenetek kellenek') -- kívánságra kikapcsolható
--pop("Sablon kimenetek kellenek?", sablon_kimenetek_kellenek) -- igen, vagy nem a lehetséges válasz
if sablon_kimenetek_kellenek then
if sablon_kimenetek_kellenek == 'igen' then
--pop("Kellenek az alkategóriák", alkategoriak_kellenek)
sablon_kimenetek_kellenek=true
else sablon_kimenetek_kellenek=false
end
else sablon_kimenetek_kellenek=true -- ha a getConf nil értékkel tért vissza.
end
szerzo= getArg(true,"szerző","aut")
szerzo2= getArg(true,"szerző2","aut2")
szerzo3= getArg(true,"szerző3","aut3")
szerzo4= getArg(true,"szerző4","aut4")
szerzo5= getArg(true,"szerző5","aut5")
szerzo6= getArg(true,"szerző6","aut6")
szerzo7= getArg(true,"szerző7","aut7")
szerzo8= getArg(true,"szerző8","aut8")
szerzo9= getArg(true,"szerző9","aut9")
cim= getArg(false,"cím","tit")
alcim= getArg(false,"alcím","subtit")
periodika= getArg(true,"periodika","per")
ev= getArg(true,"év","ann")
if ev then ev = string.gsub(ev,"[%[%]]",'')end
ho= getArg(true,"hónap","lun")
if ho then ho = string.gsub(ho,"[%[%]]",'');--pop("hónap",ho)
end
if tonumber(ho) then
ho=honapok[tonumber(ho)]
pop("hónap mint szám",ho)
end
nap= getArg(true,"nap","die")
if nap then nap = string.gsub(nap,"[%[%]]",'');--pop("nap",nap)
end
datum= getArg(true,"dátum","date")
if datum then datum = string.gsub(datum,"[%[%]]",'')end
szam= getArg(true,"szám","fasc")
volume= getArg(true,"kötet","volume")
url= getArg(false,"url")
lan=getArg(true,"nyelvkód","lan")
accd=getArg(true,"elér","accd")
if accd then accd = string.gsub(accd,"[%[%]]",'')end
issn= getArg(true,"issn")
oldal= getArg(true,"oldal","pag")
archd=getArg(true,"archívdátum","archd")
if archd then archd = string.gsub(archd,"[%[%]]",'')end
aurl=getArg(true,"archívurl","aurl")
doi= getArg(true,"doi")
evfolyam= getArg(true,"évfolyam","tom")
misc=getArg(true,"egyéb","misc")
--szerzők
---[=[ -- a szerzőket előre lépteti, társszerzőből szerzőt csinál stb.
local c=''
if szerzo then c = szerzo end
if szerzo2 then
if c == '' then c = szerzo2 else c = c..'&#8201;&#8211;&#8201;'..szerzo2 end
end
if szerzo3 then
if c == '' then c = szerzo3 else c = c..'&#8201;&#8211;&#8201;'..szerzo3 end
end
if szerzo4 then
if c == '' then c = szerzo4 else c = c..'&#8201;&#8211;&#8201;'..szerzo4 end
end
if szerzo5 then
if c == '' then c = szerzo5 else c = c..'&#8201;&#8211;&#8201;'..szerzo5 end
end
if szerzo6 then
if c == '' then c = szerzo6 else c = c..'&#8201;&#8211;&#8201;'..szerzo6 end
end
if szerzo7 then
if c == '' then c = szerzo7 else c = c..'&#8201;&#8211;&#8201;'..szerzo7 end
end
if szerzo8 then
if c == '' then c = szerzo8 else c = c..'&#8201;&#8211;&#8201;'..szerzo8 end
end
if szerzo9 then
if c == '' then c = szerzo9 else c = c..'&#8201;&#8211;&#8201;'..szerzo9 end
end
if c == '' then szerzo = nil else szerzo = c..': 'end
--]=]
 
local alkategoriak_kellenek = getConf('alkategóriák kellenek')
--[[
-- pop('Kellenek az alkategóriák?', alkategoriak_kellenek) -- igen vagy nem a lehetséges válasz
if szerzo2 == nil then -- előre léptetjük a második alszerzőt
if alkategoriak_kellenek then
if szerzo3 then szerzo2 = szerzo3; szerzo3 = nil end
if alkategoriak_kellenek == 'igen' then
end
-- pop('Kellenek az alkategóriák', alkategoriak_kellenek)
alkategoriak_kellenek = true
if szerzo == nil then -- előre léptetjuk az alszerzőket
else
if szerzo2 then szerzo = szerzo2 ; szerzo2 = nil end
alkategoriak_kellenek = false
if szerzo3 then szerzo2 = szerzo3 ;szerzo3 = nil end
end
end
end
if szerzo ~= nil then
if szerzo2 then szerzo=szerzo.." &#150; "..szerzo2 end
if szerzo3 then szerzo=szerzo.." &#150; "..szerzo3 end
szerzo = szerzo..":&#x20;"
end
--]]
--cím és alcím
local terminator
if cim
then cim = trim(lang:ucfirst(cim)); --pop("cim",cim)
else cim = " (cím nélkül) "
end
if alcim then
alcim=lang:ucfirst(alcim) --string.upper(kezdbet)..kezdbetutan
if cim then
if string.sub(cim,-1,-1) ~= ":" then
cim= cim..": "..alcim
else cim= cim.." "..alcim
end
end --
end
if cim then
terminator = string.sub(cim,-1,-1)
if (terminator ~= '?' and terminator ~= '!'and terminator ~= ',' and terminator ~= '.' and terminator ~= '\166' )
then cim= cim..". " end
end
 
local sablon_kimenetek_kellenek = getConf('sablon kimenetek kellenek') -- kívánságra kikapcsolható
-- pop('Sablon kimenetek kellenek?', sablon_kimenetek_kellenek) -- igen vagy nem a lehetséges válasz
if sablon_kimenetek_kellenek then
if sablon_kimenetek_kellenek == 'igen' then
--pop('Kellenek az alkategóriák', alkategoriak_kellenek)
sablon_kimenetek_kellenek = true
else
sablon_kimenetek_kellenek = false
end
else
-- ha a getConf nil értékkel tért vissza
sablon_kimenetek_kellenek = true
end
 
aut = getArgMore(true, 9, 'szerző', 'aut')
-- periodika
tit = getArg(false, 'cím', 'tit')
subtit = getArg(false, 'alcím', 'subtit')
per = getArg(true, 'periodika', 'per')
ann = getArg(true, 'év', 'ann')
lun = getArg(true, 'hónap', 'lun')
die = getArg(true, 'nap', 'die')
datum = getArg(true, 'dátum', 'date')
fasc = getArg(true, 'szám', 'fasc')
vol = getArg(true, 'kötet', 'volume')
url = getArg(false, 'url')
lan = getArg(true, 'nyelvkód', 'lan')
accd = getArg(true, 'elér', 'accd')
issn = getArg(true, 'issn')
pag = getArg(true, 'oldal', 'pag')
archd = getArg(true, 'archívdátum', 'archd')
aurl = getArg(true, 'archívurl', 'aurl')
doi = getArg(true, 'doi')
tom = getArg(true, 'évfolyam', 'tom')
misc = getArg(true, 'egyéb', 'misc')
 
--szerzők
if periodika and periodika ~= '' then periodika="&#x20;".."''"..periodika..",'' "
---[=[ -- a szerzőket előre lépteti, társszerzőből szerzőt csinál stb.
if #aut > 0 then
else
aut = table.concat(aut, '&#8201;&#8211;&#8201;') .. ': '
if cim and cim ~= '' then hiba_jelzes = hiba_jelzes..' '.. error (false,"periodika nélkül ") end
else
end
aut = nil
end
--]=]
 
 
--cím és alcím
ou=''
local terminator
if ev then
if tit then
local count='' -- szämlälja a csereeket
tit = mw.text.trim(lang:ucfirst(tit))
ev = string.gsub(ev,"[%-]",'–') -- kiskötőjelből nagy kötőjel
-- pop('cím', tit)
ev, count=string.gsub(ev,"[^%–0123456789]",'') -- az évben csak számjegyek és nagy kötőjel valamint szögletes zárójelek maradhat
else
pop ("ev a gsubot követően",ev)
tit = ' (cím nélkül) '
if count == 0 then
end
else
if subtit then
table.insert(alkategoriak,"[[Kategória:Hibásan használt CitPer – tiltott karakter az év paraméterben]]")
subtit = lang:ucfirst(subtit)
hiba_jelzes = hiba_jelzes..' '.. error (true,"tiltott karakter az év paraméterben")
-- ha a cím végén kettőspont van, leszedjük, hogy ne legyen kettő egymás után
end
tit = tit:gsub(':$', '') .. ': ' .. subtit
local nums={} -- tárolja az évszámokat
end
local hossz={} -- tárolja az évszámok számát
if not tit:match('[%.%?!,\166]$') then
tit = tit .. '.'
for w in string.gmatch(ev,'%d+') do -- csak decimálisakat keres vagy [ , ill ] zárójeleket
nums[#nums + 1] = w; hossz[#hossz + 1] = #w
end
pop("hány tagból áll az év?", #nums)
if #nums == 2 then -- lásd almanachok 2011-2012
pop("évtag 1", nums[1])
pop("évtag 2", nums[2])
if hossz[1] ==hossz[2] then
datum = nil
ev=nums[1] -- és most bármi volt a két év adat közt az inputban nagykötőjel köti össze őket.
if nums[2] then ev=ev..' – '..nums[2] end
end
else -- pl éééé-éé az év megadásának formája
datum = string.sub(ev,1,4)..'.' -- nem tekintjük az éééé-hh forma szándékának, levágjuk
pop("dátum évből1", datum)
if ho then datum = datum..' '..ho; pop("dátum évből,hóból", datum)
if nap then datum = datum..' '..nap..'.' ;
pop("dátum évből,hóból,napból", datum)
end
end
ev=nil -- mert már összeállt a dátum
end
end -- if ev
 
 
-- DÁTUMperiodika
if per and per ~= '' then
per = "&#x20;''" .. per .. ",'' "
if datum then
elseif tit and tit ~= '' then
local nyom=''-- ha van dátum (mostmár vagy a dátum, vagy ennek hiányában az év)
error(false, 'periodika nélkül')
local nyom, dou= ds.datumszuro(datum)
end
pop("nyom",nyom)
pop("dou",tostring(dou))
if dou
then outdatum = ds.honapnevesdate(dou) -- a zárójelezés a szám és év sorrend tisztázásánál
pop("outdatum",outdatum)
else outdatum = datum -- bármit adtak meg, menjen az outputra
hiba_jelzes = hiba_jelzes..' '..error (false, "hibás dátum") -- az outdatum körül még nincs zárójel
end
pop("*outdatum", outdatum)
end
 
if szamann then
szam ann = string.ann:gsub (szam, '-[%[%]]' , '')
local count
szam = string.gsub (szam, '—' , '–')
ann = ann:gsub('[%-]', '–') -- kiskötőjelből nagy kötőjel
szam = szam..". sz."
ann, count = ann:gsub('[^%–0123456789]', '') -- az évben csak számjegyek és nagy kötőjel maradhat
--pop("*szám=", szam)
pop('év a gsubot követően', ann)
end -- if szam
if count ~= 0 then
error(true, 'tiltott karakter az év paraméterben')
table.insert(alkategoriak, '[[Kategória:Hibásan használt CitPer – tiltott karakter az év paraméterben]]')
end
 
local evszamnums = ''{} -- évszámok tárolása
local hossz = {} -- évszámok számának tárolása
-- csak (arab) számjegyeket keres
if not szam then szam=''end -- ha a szám nil érték, akkor legyen üres a konkatenálás miatt
for w in ann:gmatch('%d+') do
if not outdatum then outdatum='' end -- ha a szám nil érték, akkor legyen üres a konkatenálás miatt
table.insert(nums, w)
table.insert(hossz, #w)
end
pop('hány tagból áll az év?', #nums)
if #nums == 2 then
-- lásd almanachok 2011–2012
pop('évtag 1', nums[1])
pop('évtag 2', nums[2])
if hossz[1] == hossz[2] then
datum = nil
-- és most bármi volt a két év adat közt az inputban, nagykötőjel köti össze őket
ann = nums[1] .. ' – ' .. nums[2]
end
else -- p. éééé-éé az év megadásának formája
-- nem tekintjük az éééé-hh forma szándékának, levágjuk
datum = ann:sub(1, 4) .. '.'
pop('dátum évből1', datum)
if lun then
lun = lun:gsub('[%[%]]', '')
if tonumber(lun) then
lun = honapok[tonumber(lun)]
pop('hónap mint szám', lun)
end
if lun then
datum = datum .. ' ' .. lun
pop('dátum évből, hóból', datum)
if die then
die = die:gsub('[%[%]]', '')
datum = datum .. ' ' .. die .. '.'
pop('dátum évből, hóból, napból', datum)
end
else
error(false, 'hibás hónap')
end
end
-- már összeállt a dátum
ann = nil
end
end
 
if ev then evszam = "&#x20;"..'('..ev..') '..szam.." "
else
if outdatum ~= '' then evszam = "&#x20;"..szam.." "..'('..outdatum..') '
else
if szam then evszam = "&#x20;"..'(????) '..szam.." " end
end
end
-- pop("evszam",evszam)
-- évfolyam
 
-- DÁTUM
-- ha van dátum (most már vagy a dátum, vagy ennek hiányában az év)
if datum then
datum = datum:gsub('[%[%]]', '')
local nyom, dou = ds.datumszuro(datum)
pop('nyom', nyom)
pop('dou', tostring(dou))
if dou then
outdatum = ds.honapnevesdate(dou) -- zárójelezés a szám és év sorrend tisztázásánál
pop('outdatum', outdatum)
else
-- bármit adtak meg, menjen a kimenetre (az outdatum körül még nincs zárójel)
outdatum = datum
error(false, 'hibás dátum')
end
pop('*outdatum', outdatum)
end
 
if evfolyamfasc then
fasc = fasc:gsub('-', '–')
if isRoman(evfolyam) == false then
fasc = fasc:gsub('—', '–')
if isArabic(evfolyam) then evfolyam = toRoman(tonumber(evfolyam)) end
fasc = fasc .. '. sz.'
end -- evfolyam arab szám
-- pop('*szám=', fasc)
evfolyam = "&#x20;"..evfolyam..". évf."
end
end -- nem nil az évfolyam
-- oldal
 
local evszam = ''
 
if not if oldalfasc then
-- ha a szám nil érték, akkor legyen üres a konkatenálás miatt
oldal = string.gsub (oldal, '-' , '–') -- kiskötőjelből nagy
fasc = ''
oldal = string.gsub (oldal, '—' , '–') -- hetvenkvirtesből nagy
end
oldal = string.gsub (oldal, '%.,' , ',') -- pontot követő veszőből vesszőt
if ann then
oldal = string.gsub (oldal, '%.' , '') -- pontból üreset
evszam = '&#x20;(' .. ann .. ') ' .. fasc .. ' '
oldal = string.gsub (oldal, ',' , '.,') -- végül vesszőből ponot kovető vesszőt
elseif outdatum and outdatum ~= '' then
oldal ="&#x20;"..oldal..". o. "
evszam = '&#x20;' .. fasc .. ' (' .. outdatum .. ') '
end
elseif fasc then
evszam = '&#x20;(????) ' .. fasc .. ' '
end
-- pop('evszam', evszam)
 
-- ISSNévfolyam
if tom then
--<abbr title="0708-9635">ISSN</abbr>
if not isRoman(tom) then
if issn then --<abbr title="International Standard Serial Number: 0708-9635">ISBN</abbr>
if isISSN isArabic(issntom) then
tom = toRoman(tonumber(tom))
issn = " <abbr title=\""..string.sub(issn,1,9).."\"> ISSN </abbr> "
end
else hiba_jelzes = hiba_jelzes..' '..error(false,"hibás ISSN")
end
tom = '&#x20;' .. tom .. '. évf.'
else issn = '' -- ha nem létezik, legyen üres
end -- issn
-- archívdátum -- archívurl
if archd then -- ha van dátum
local outarchd, dou
dou= select(2, ds.datumszuro(archd))
if dou
then outarchd = ds.honapnevesdate(dou)
if aurl then
aurl = string.gsub(aurl, '%s','%%20') -- URL ÁTKÓDOLÁSA
aurl = string.gsub(aurl, '\"','%%22')
aurl = string.gsub(aurl, "\'",'%%27')
aurl = string.gsub(aurl, "<",'%%3c')
aurl = string.gsub(aurl, ">",'%%3e')
aurl = string.gsub(aurl, "%[",'%%5b')
aurl = string.gsub(aurl, "%]",'%%5d')
aurl = string.gsub(aurl, "{",'%%7b')
aurl = string.gsub(aurl, "|",'%%7c')
aurl = string.gsub(aurl, "}",'%%7d')
archd = " <span title=\""..outarchd.."\">["..aurl.." arch".."]</span> "
else hiba_jelzes = hiba_jelzes..' '..error(true,"archívdátum van, de archívurl nélkül ")
--table.insert(alkategoriak,"[[Kategória:Hibásan használt CitPer – archívdátum archívurl nélkül]]")
end
else hiba_jelzes = hiba_jelzes..' '..error(true,"hibás archívdátum ")
--table.insert(alkategoriak,"[[Kategória:Hibásan használt CitPer – hibás archívdátum]]")
end -- if dou
end -- if archd
 
-- oldal
if pag then
pag = pag:gsub('-', '–') -- kiskötőjelből nagy
pag = pag:gsub('—', '–') -- hetvenkvirtesből nagy
pag = pag:gsub('%.,', ',') -- pontot követő veszőből vesszőt
pag = pag:gsub('%.', '') -- pontból üreset
pag = pag:gsub(',', '.,') -- végül vesszőből ponot követő vesszőt
pag = '&#x20;' .. pag .. '. o.'
end
 
-- ISSN
--<abbr title="0708-9635">ISSN</abbr>
if issn then
if isISSN(issn) then
issn = '<abbr title="' .. issn:sub(1, 9) .. '">ISSN</abbr>'
else
error(false, 'hibás ISSN')
end
else
issn = '' -- ha nem létezik, legyen üres
end
 
-- archívdátum -- archívurl
-- doi
if archd then -- ha van dátum
archd = archd:gsub('[%[%]]', '')
iflocal doi thenoutarchd, dou
dou = select(2, ds.datumszuro(archd))
local doicontrol, doi_10_utani_resz =''
if dou then
doicontrol = string.sub(doi,1,2)
outarchd = ds.honapnevesdate(dou)
doi_10_utani_resz = string.sub(doi,3,-1)
if aurl then
if doicontrol ~= "10" then doi = '10'..doi_10_utani_resz end
aurl = urlencode(aurl)
doi = "<span title=\""..doi.."\">[".."http://dx.doi.org/"..doi.." doi".."]</span> "
archd = '<span title="' .. outarchd .. '">[' .. aurl .. ' arch]</span>'
end
else
-- kötet
error(true, 'archívdátum van, de archívurl nélkül')
-- table.insert(alkategoriak, '[[Kategória:Hibásan használt CitPer – archívdátum archívurl nélkül]]')
end
else
error(true, 'hibás archívdátum')
-- table.insert(alkategoriak, '[[Kategória:Hibásan használt CitPer – hibás archívdátum]]')
end
end
 
-- DOI
if volume then volume =" "..volume.." k. " end
if doi then
local doicontrol, doi_10_utani_resz
--egyéb
doicontrol = doi:sub(1, 2)
doi_10_utani_resz = doi:sub(3, -1)
if doicontrol ~= '10' then
if misc then misc ="&#x20; "..misc end
doi = '10' .. doi_10_utani_resz
end
doi = '<span title="' .. doi .. '">[https://dx.doi.org/' .. doi .. ' doi]</span>'
end
 
-- urlkötet
if vol then
vol = ' ' .. vol .. ' k.'
end
if url ~= nil and cim ~= nil then
-- SZÜKSÉGES CSERÉK:cím=[http://crypto.com/papers/jbug-Usenix06-final.pdf Keyboards and Covert Channels"]
--newline [ ] | Ezek kellenek, mert az URL ráhúzásakor bezavarnak
--space &#91; &#93; &#124;
cim = string.gsub(cim,'\n',' ')
cim = string.gsub(cim,'%[','&#91;')
cim = string.gsub(cim,'%]','&#93;')
cim = string.gsub(cim,'%|','&#124;')
url = string.gsub(url, '%s','%%20') -- az URL átkódolása kell.
url = string.gsub(url, '\"','%%22')
url = string.gsub(url, "\'",'%%27')
url = string.gsub(url, "<",'%%3c')
url = string.gsub(url, ">",'%%3e')
url = string.gsub(url, "%[",'%%5b')
url = string.gsub(url, "%]",'%%5d')
url = string.gsub(url, "{",'%%7b')
url = string.gsub(url, "|",'%%7c')
url = string.gsub(url, "}",'%%7d')
cim = "[" .. url .. " " .. cim .. "] "
-- http://mek.oszk.hu/00300/00355/html/ABC11587/12167.htm| Bányadémon és bergmandl: Mi van, ha alcím is van?
end -- nem nil az url
 
--egyéb
if misc then
misc = '&#x20; ' .. misc
end
 
-- nyelvurl
if url ~= nil then
-- SZÜKSÉGES CSERÉK:cím=[http://crypto.com/papers/jbug-Usenix06-final.pdf Keyboards and Covert Channels"]
--newline [ ] | Ezek kellenek, mert az URL ráhúzásakor bezavarnak
--space &#91; &#93; &#124;
tit = tit:gsub('\n', ' ')
tit = tit:gsub('%[', '&#91;')
tit = tit:gsub('%]', '&#93;')
tit = tit:gsub('%|', '&#124;')
 
url = urlencode(url)
tit = '[' .. url .. ' ' .. tit .. ']'
-- http://mek.oszk.hu/00300/00355/html/ABC11587/12167.htm| Bányadémon és bergmandl: Mi van, ha alcím is van?
end
 
-- nyelv
local LetezoLansablon = false
if lan then
lan = mw.getCurrentFrame():expandTemplate{ title = 'Nyelvcímke', args = { lan } }
if (lan ~= nil ) and (cim==nil) --ha nincs cím akkor értelmetlen
end
then -- hiba_jelzes = hiba_jelzes..' '..error("nyelv cím nélkül")..' '
else
if lans[lan] ~= nil then -- ha fenn van a listánkon, akkor nem jöhet PARANCSFÁJL HIBA
LetezoLansablon = frame:callParserFunction{ name = '#ifexist',args = { 'lan', lan }}
if LetezoLansablon then nyelv = frame:expandTemplate{ title = lan, args = {lan } } ..' 'end
--frame:expandTemplate{ title = 'template', args = { 'arg1', 'arg2', name = 'arg3' } }
else -- különben mi magunk kiírjuk , mert így beszédesebb
nyelv = lan -- legyen maga a megadott paraméter pl. "krixkrax"
--hiba_jelzes = hiba_jelzes..' '..error("ismeretlen nyelvkód")..' '
end
end
end
 
-- elérés dátuma
if accd then
accd = accd:gsub('[%[%]]', '')
-- elérés dátuma
local nyom, dou = ds.datumszuro(accd)
--pop('a dátumszűrés eredménye', nyom)
if dou then
accd = 'Hozzáférés: ' .. ds.honapnevesdate(dou)
else
error(false, 'hibás elérési dátum')
end
end
 
-- figyelmeztetés a megadott, de nem használt paraméterekre
if accd then -- ha van elérés
checkArgs()
local outaccd
local nyom=''
local nyom,dou= ds.datumszuro(accd)
--pop("a dátumszűrés eredménye",nyom)
if dou
then outaccd = ds.honapnevesdate(dou)
accd = "Hozzáférés: "..outaccd ..' '
else hiba_jelzes = hiba_jelzes..' '..error(false,"hibás elérési dátum ")
end -- if dou
end -- if accd
 
-- az output összeállítása
local s = ''
if sablon_kimenetek_kellenek then
if aut then s = s .. aut .. ' ' end
if tit then s = s .. tit .. ' ' end
if lan then s = s .. lan .. ' ' end
if per then s = s .. per .. ' ' end
if tom then s = s .. tom .. ' ' end
if vol then s = s .. vol .. ' ' end
if evszam then s = s .. evszam .. ' ' end
if pag then s = s .. pag .. ' ' end
if archd then s = s .. archd .. ' ' end
if issn then s = s .. issn .. ' ' end
if doi then s = s .. doi .. ' ' end
if accd then s = s .. accd .. ' ' end
if misc then s = s .. misc .. ' ' end
-- if ou then s = s .. ou .. ' ' end -- ez csak nyomkövetésnél kell, de akkor nagyon
if hibavan then s = s .. ' ' .. table.concat(hiba_jelzes, ', ') end
s = mw.text.trim(s)
if alkategoriak_kellenek then s = s .. table.concat(alkategoriak) end
if kategorizalas_van then s = s .. '[[Kategória:Hibás paraméterezésű CitPer-t tartalmazó lapok]]' end
return s
end -- sablon kimenetek kellenek
end
 
local function _run(a, c)
-- az output összeállítása
args = a
config = c or {}
s=''
return _citper()
if sablon_kimenetek_kellenek then
if szerzo then s = s.. szerzo..' ' end
if cim then s = s..cim..' ' end
if nyelv then s = s..nyelv..' ' end
if periodika then s = s..periodika..' ' end
if evfolyam then s = s..evfolyam..' ' end
if volume then s = s..volume..' ' end
if evszam then s = s..evszam..' ' end
if oldal then s = s..oldal..' ' end
if archd then s = s..archd..' ' end
if issn then s = s..issn..' ' end
if doi then s = s..doi..' ' end
if accd then s = s..accd..' ' end
if misc then s = s..misc..' ' end
--if ou then s = s..ou..' ' end --ez csak nyomkövetésnél kell, de akkor nagyon
if hibavan then s = s ..' '..hiba_jelzes..' ' end
if alkategoriak_kellenek then s = s ..' '..table.concat(alkategoriak,";")..' ' end
if kategorizalas_van then s = s .. "[[Kategória:Hibás paraméterezésű CitPer-t tartalmazó lapok]]"..' ' end
return trim(s)
end -- sablon kimenetek kellenek
end
 
function run(frame)
local function run(frame)
local pframe = frame:getParent()
args = pframe.args -- azok a paraméterek,sablon amelyekhívásakor amegadott sablont kisérik a Pepo41/CCitPer sablon hivása oldalonparaméterek
config = frame.args -- az #invoke utasításban átadott paraméterek
return _citper(frame)
end
 
local p = {
run = run,
run = run, -- semmi mást nem adunk át, csak a futást indító rutint
_run = _run
 
}