„Modul:Dátumszűrés” változatai közötti eltérés

Tartalom törölve Tartalom hozzáadva
KeFe (vitalap | szerkesztései)
Új oldal, tartalma: „--A MODUL FÜGGVÉNYEIT ÉS ADATAIT CSAK require= "Homokozó/Pepo41/Dátumszűrés" MÓDON TUDJUK ELÉRNI. --A CCitWeb és családja számára készült el. local h…”
 
Gyimhu (vitalap | szerkesztései)
Nincs szerkesztési összefoglaló
1. sor:
-- A MODUL FÜGGVÉNYEIT ÉS ADATAIT CSAK require= "Homokozó/Pepo41/('Modul:Dátumszűrés" ') MÓDON TUDJUK ELÉRNI.
-- A CitWeb és családja számára készült el.
 
require('Modul:No globals')
--A CCitWeb és családja számára készült el.
 
-- a magyar dátumhoz kell
local honapok = {'jan.', 'feb.', 'márc.', 'ápr.', 'máj.', 'jún.', 'júl.', 'aug.', 'szept.', 'okt.', 'nov.', 'dec.'}
 
-- ellenőrizzük az egyes hónapok hosszát
local honapok = {"jan.","feb.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."} -- a magyar dátumhoz kell
local honaphossz = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
 
local honaphossz = {31,28,31,30,31,30,31,31,30,31,30,31} -- ellenőrizzük az egyes hónapok hosszát
--[[
 
pop a nyomkövetés céljait szolgálja
 
--]]
 
-- pop a nyomkövetés céljait szolgálja
local ou = ''
local function pop(...) -- idézőjeles rész és bővítmények az ou számára
 
--[[ memóriatúllépést okoz, csak teszteléshez
function pop(mi,mv1,mv2,mv3,mv4,mv5) -- idézőjeles rész és 5 bővítmény az ou számára
local list = {...}
if not mi then return else ou = ou..mi..'\n ' end
for _, var in pairs(list) do
if not mv1 then return else ou = ou..mv1..'\n' end
if not mv2 then return else ou = ou ..mv2 tostring(var) .. '\n' end'
mw.log(ou)
if not mv3 then return else ou = ou..mv3..'\n' end
end
if not mv4 then return else ou = ou..mv4..'\n' end
]]
if not mv5 then return else ou = ou..mv5..'\n' end
end
 
-- a magyar helyesírás szerinti rövidített hónapnevek a function honapnevesdate() kimenetének
-- előállításához
 
local honapsorszamekezetnelkul={} -- az ISO 8604 szabvány szerinti dátumban a hónap helyére lépő stringet szolgáltatja
local honapsorszamekezetnelkul = {
["'jan"'] = "'01"', -- january, Januar
honapsorszamekezetnelkul["'feb"'] = "'02"', -- february, Februar , février
honapsorszamekezetnelkul["'mar"'] = "'03"', -- mars, März , mars
honapsorszamekezetnelkul["'apr"'] = "'04"', -- april , avril első betű a, második v APRL AVRL
honapsorszamekezetnelkul["'maj"'] = "'05"', -- may mai mai az első betű m, a harmadik nem r MAY
honapsorszamekezetnelkul["'jun"'] = "'06"', -- june,juin juin az első kettő ju de a harmadik i JUN
honapsorszamekezetnelkul["'jul"'] = "'07"', -- july, juli, juillet viszont itt is i, VEGYÜK KI AZ I-T A NÉVBŐL: JUL
honapsorszamekezetnelkul["'aug"'] = "'08" ', --, august, aout első betű a, második o
honapsorszamekezetnelkul["'sze"'] = "'09"', -- sept
honapsorszamekezetnelkul["'okt"'] = "'10" ',
honapsorszamekezetnelkul["'nov"'] = "'11" ',
['dec'] = '12'
honapsorszamekezetnelkul["dec"] = "12" -- első betű j ja, jun jul
}
-- első betű m mar, Mär, may, ma
local decimal={} -- a római számmal megadott hónap decimális megfelelője
decimal['I'] =1
decimal['II'] =2
decimal['III'] =3
decimal['IV'] =4
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 romaihonap={} -- a római számmal megadott hónap rövidített neve a záró pont nélkül
romaihonap["I"]= "jan"
romaihonap["II"]= "feb"
romaihonap["III"]= "márc"
romaihonap["IV"]= "ápr"
romaihonap["V"]= "máj"
romaihonap["VI"]= "jún"
romaihonap["VII"]="júl"
romaihonap["VIII"]="aug"
romaihonap["IX"]= "szept"
romaihonap["X"]= "okt"
romaihonap["XI"]= "nov"
romaihonap["XII"]= "dec"
 
-- a római számmal megadott hónap decimális megfelelője
local hibavan = false
local decimal = {
['I'] = 1,
['II'] = 2,
['III'] = 3,
['IV'] = 4,
['V'] = 5,
['VI'] = 6,
['VII'] = 7,
['VIII'] = 8,
['IX'] = 9,
['X'] = 10,
['XI'] = 11,
['XII'] = 12
}
 
local hibavan = false
 
 
77 ⟶ 64 sor:
 
-- kell a dátum ellenőrzéséhez
--[[ a numerikus dátumokat kezeli le és ISO 8604 szabvány szerinti dátumot csinálacsinál a bemeneti esetleg helytelenül megadott dátumból--]]
 
--[[
--[[ DÁTUMSZŰRŐ:Kiszűri a bemenetén kaporr dátumokbóla)a csupa számból álló ISO 8604 dátumokatb)a római számmal megadott magyar dátumokatc)a magyar, vagy idegen hónapneveket tartalmazó dátumokatés ezekből mind helyesen formázott ISO 8604 dátumokat csinál--]]
DÁTUMSZŰRŐ:
Kiszűri a bemenetén kapott dátumokból
a) a csupa számból álló ISO 8604 dátumokat
b) a római számmal megadott magyar dátumokat
c) a magyar vagy idegen hónapneveket tartalmazó dátumokat
és ezekből mind helyesen formázott ISO 8604 dátumokat csinál
--]]
 
local function error ( about ) -- hibajelzést szolgál
-- Enclose errorMsg with <span>
-- Precondition:
-- about -- string
hibavan = true
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
return "'<span class=\'"error\">'>" .. r .. "'</span>, "'
end -- error()
 
local function trim(str)
if str.args then
str = str.args[1]
end
if str == nil then
return nil
else
return (str:gsub("^%s*(.-)%s*$", "%1")) -- extra brackets are necessary because gsub returns multiple values
end
end
 
local function isArabic(v)
local i,j,l
if type(v) ~= 'string' then return false end -- számok is stringek
for i = 1,string.len(v) do
j, l = string.find ("0123456789",string.sub(v,i,i)) -- az i-arab számjegy?
if j == nil then return false end
end --do ciklus, lejárt, tehát minden karakter arab számjegy
return true
end
 
local function isRoman(v)
if type(v) ~= 'string' then return false end
-- A római számok stringek
return false
for i = 1,string.len(v) do -- végig a stringen
end
local j, l = string.find ("IVXLCDM",string.sub(v,i,i)) -- az i-edik római?
if v:find('[^IVXLCDM]') then
if j == nil then return false end
return false
end --do ciklus, lejárt, tehát minden karakter római számnak felel meg
end
return true
end
 
local function romaihonaptotext(romaiszam) --string formátumban
local s=""
if type (romaiszam) == string then
if isroman ( romaiszam) then -- a string római szám
if romaihonap[romaiszam] ~= nil then s = romaihonap[romaiszam]
else
s = error("helytelen hónap")
end
else -- nem római szám
s = error("helytelen hónap")
end
else -- nem string tipus
s = error("helytelen hónap")
end
return s -- a hónap rövid neve
end --function
 
--[[ month_to_hu(m)
segéd-funkció, mely az idegen hónapneveket helyettesíti azékezet nélküli, három karakteres rövidített
magyar hónapnevekre (a rövidítést nem jelzi ponntal)
Ennek alapján beküzdi a kétjegyű hónap-sorszámot az ISO 8604 szabványankszabványnak megfelelő alakban
--]]
 
local function month_to_hu(m)
--[[
Spanyol: enero febrero marzo abril mayo junio julio ago septiembre v. setiembre octubre noviembre diziembre
Portugál: janeiro fevereiro marco abril maio junho julho agosto setembro outubro novembro dezembro
Olasz: gennaio febbraio marzo aprile maggio giugno luglio agosto settembre ottobre novemre dicembre
--]]
local alfa, eb, ub, e2b=''
if not m then
return
end
m m= string.gsub (m, ' ', '') -- cseréljük fel a szóközöket üressel
m m= string.gsub (m, 'ä', 'a') -- März , mars problem ôû
m m= string.gsub (m, 'û', 'u')
m = string.lower (m) -- minden kisbetűs
alfa = string.match(m," '[a-z%-]+"') -- kötőjel problémás
if alfa then -- vannak egyáltalán betűk
pop("'1- alfa="', alfa)
m = string.sub (m, 1, 3) --három betünk van
eb = string.sub(m, 1, 1)
if eb == 'm' then
eb = string.sub (m,1,1)
ub = string.sub(m, -1, -1)
if eb ub == 'mi' then ubm =string.sub (m,-1,-1)'maj'
elseif ub == 'r' then m = 'mar'
ifelseif ub == 'iy' then m = 'maj'
elseif ub == 'rg' then m = 'marmaj' --maggio
end
elseif ub == 'y' then m='maj'
elseif ubeb == 'ge' then m='maj' --maggio
m = 'jan' end--spanyol
elseif eb == 'g' then
e2b = string.sub(m, 1, 2)
elseif eb =='e' then m='jan'--spanyol
if e2b == 'ge' then
m = 'jan'
elseif eb =='g' then e2b = string.sub (m,1,2)
ifelseif e2b == 'gegi' then m='jan'
elseif e2bm == 'gi' then m='jun' --- olasz
end
end elseif eb == 'j' then
if string.sub(m, 2, elseif eb2) == 'ja' then
m = 'jan'
ifelseif string.sub (m,2 3,2 3) == 'an' then m='jan'
m = 'jun'
elseif string.sub (m, 3, 3) == 'ni' then m='jun'
elseif string.sub (m,3,3) == 'i'then m='jul'
end
elseif eb == 'a' then
if m:find('^a[pvb]') then
elseif eb =='a' then e2b = string.sub (m,1,2)
m = 'apr'
if e2b == 'ap'or e2b == 'av'or e2b == 'ab' then m='apr' --- első betű a apr, av, au, ao
elseif e2b ==m:find('au'or e2b == 'ag'or e2b == 'ao^a[ugo]') then m='aug'
m = end'aug'
end
elseif eb =='f' then m='feb'
elseif eb == 'lf' then m = 'julfeb' --olasz
elseif eb == 'sl' then m = 'szejul' --olasz
elseif eb == 'os' then m = 'oktsze'
elseif eb == 'no' then m = 'novokt'
elseif eb == 'dn' then m = 'decnov'
elseif eb == 'd' then m = 'dec'
else return false
endelse
else return false
end --if alfa
else
return m
return false
end-- function
end
return m
end
 
local function szokoev(ev)
if ev == nil then
return false
end
local e = tonumber(ev)
if e then -- is numeric?
if e % 400 == 0 then return true end
if e % 100 == 0 then return false end
if e % 4 == 0 then return true end
end
return false
end
 
--[[ en_to_hu(de)
local function szokoev (ev)
Angol vagy amerikai angol dátumokból, illetve német, francia, olasz, spanyol
if ev== nil then return false end
és portugál dátumokból csinál ISO 8604 szabvány szerinti dátumot. Esetleg
local e= tonumber(ev)
bővíthető ez a lista, ha nem vezet kollízióra az idegen neveket értelmező
if e then --is numeric?
en_to_hu funkcióban. Hibás dátum esetén false értékkel tér vissza.
if e % 400 == 0 then return true end
if ev % 100 == 0 then return false end
if ev % 4 == 0 then return true end
end
return false
end
 
--[[ en_to_hu(de)
 
angol, vagy amerikai angol dátumokból,
illetve német, francia, olasz, spanyol és portugál dátumokból csinál
ISO 8604 szabvány szerinti dátumot. Esetleg bővíthető ez a lista, ha nem vezet kollízióra az idegen neveket értelmező en_to_hu funkcióban. Hibás dátum esetén false értékkel tér vissza.
 
--]]
local function en_to_hu(de)
pop("'en_to_hu indul"')
--Az angol dátumokat jó lenne felismernie: "Dec. 10, 2013". string.lower (s)
local i,j,k,lev, ho,betuk nap, maradek,sz,e2b,e,e2k,ev,nap,s=''
if type(de) ~= 'string'then then
return false
end
de de= string.gsub (de, ' ', '') -- cseréljük fel a szóközöket üressel
de = string.gsub (de, '[%.%-]', '/')-- cseréljük fel a pontot és kötőjelet perjellel dec/10/2013
--éôûäde = string.gsub (de, 'é', 'e')--éôûäF
de = string.lower (de) -- minden kisbetűs
 
ev = string.match(de, '%d%d%d%d?')-- keress a dátumban az évet 2013
if ev then
ev =string.match(de,"%d%d%d%d?")-- keress a dátumban az évet 2013
if ev then maradek = string.gsub(de, ev, '')
else
return false
end
if maradek then
pop("'en maradek?"', maradek)
-- számmal indul mert little endian
maradek maradek= string.gsub (maradek, '/', '') -- már nincsenek perjelek dec10 , vagy pl dec
local i, j
i, j = string.match(maradek," '()%d%d?()"')
pop("'nap indexei a maradékban="', i, j)
if j then
nap = string.sub(maradek, i, j-1);end
pop("nap ?=", nap)
if nap then ho=string.gsub (maradek,nap,'') else ho = maradek end --
-- azaz dec10 esetén marad dec, dec esetén pedig ő a hónap
end
de =ev
ho=honapsorszamekezetnelkul[month_to_hu(ho)];
if ho then de=de..'-'..ho end
if nap then de = de..'-'..nap end -- összeraktuk a dátumot
pop("USA&en átalakult?", de);
local honum= tonumber(ho)
pop("honum",honum)
if honum ~= nil and 1 <= honum and honum <= 12 then
else return false -- hónap sorszáma hibás
end
pop("'nap ?=" ',nap); pop("nap típusa: ",type(nap))
 
if nap then
localho napnum= tonumberstring.gsub(maradek, nap, '')
else
pop("napnum",napnum)
ho = maradek
if napnum ~= nile and 1 <= napnum and napnum <= 31 then
end -- azaz dec10 esetén marad dec, dec esetén pedig ő a hónap
pop("napnum jó?g",napnum)
end
if szokoev(ev) then honaphossz[2] = 29 else honaphossz[2] = 28 end
 
if honaphossz[honum] < napnum then return false end -- nap sorszáma hibás
de = ev
else return false
ho = honapsorszamekezetnelkul[month_to_hu(ho)]
end -- nap sorszáma hibás
if ho then
end
returnde = de .. '-' .. ho
end
end-- function en_to_hu
if nap then
local function ekezet_le(s)
de = de .. '-' .. nap
s=string.gsub(s,'á','a')
end -- összeraktuk a dátumot
s=string.gsub(s,'é','e')
pop('USA&en átalakult?', de)
s=string.gsub(s,'í','i')
local honum = tonumber(ho)
s=string.gsub(s,'ó','o')
pop('honum', honum)
s=string.gsub(s,'ő','ö')
if honum == nil or 1 > honum or honum > 12 then
s=string.gsub(s,'ú','u')
return false -- hónap sorszáma hibás
s=string.gsub(s,'ű','ö')
end
s=string.gsub(s,'ä','a')
pop('nap=', nap)
s=string.gsub(s,'ô','o')
pop('nap típusa: ', type(nap))
s=string.gsub(s,'û','u')
if nap then
local napnum = tonumber(nap)
pop('napnum', napnum)
if napnum ~= nil and 1 <= napnum and napnum <= 31 then
pop('napnum jó?g', napnum)
if szokoev(ev) then
honaphossz[2] = 29
else
honaphossz[2] = 28
end
if honaphossz[honum] < napnum then
return false
end -- nap sorszáma hibás
else
return false
end -- nap sorszáma hibás
end
return de
end
 
local function ekezet_le(s)
s = string.gsub(s, 'á', 'a')
s = string.gsub(s, 'é', 'e')
s = string.gsub(s, 'í', 'i')
s = string.gsub(s, 'ó', 'o')
s = string.gsub(s, 'ő', 'ö')
s = string.gsub(s, 'ú', 'u')
s = string.gsub(s, 'ű', 'ö')
s = string.gsub(s, 'ä', 'a')
s = string.gsub(s, 'ô', 'o')
s = string.gsub(s, 'û', 'u')
return s
end
local function numdate(de)
 
 
local ev, ho, nap,i,j,k,l, maradek
local de,perek=function string.gsubnumdate(de,'%-','/')
local ev, ho, nap, i, j, maradek
pop("numdate de perekkel =",de,tostring(perek)); --
local de, perek = string.gsub(de, '%-', '/')
pop('numdate de perekkel = ', de, tostring(perek))
if perek == 2 then
i, j = string.find(de, '/');
pop("'numdate_2peres, benne hol a perjel = "', i, j)
ev = string.sub(de, 1, j-1)
maradek = string.sub(de, j+1, -1)
pop("'numdate_2peres: év, maradek =" ' .. ev .. ', ' .. maradek);--
i, j = string.find(maradek, '/');
pop("'numdate_2peres i,j a hóhoz és naphoz =" ', i, j)
ho = string.sub(maradek, 1, j-1)
nap = string.sub(maradek, j+1, -1)
pop("'2peres év, maradekban ho, nap =" ', ho, nap);
elseif perek == 1 then -- van év és hó
i, j = string.find(de, '/');
pop("'numdate_1peres, benne hol a perjel =" ', i, j)
ev = string.sub(de, 1, j-1)
ho = string.sub(de, j+1, -1)
pop("'numdate_1peres: év, =" ', ev, ho);
else
ev = de
end
if #ev < 3 then
return false
end
pop("'év hossza="', ,tostring(#ev))
if ho then
local honum = tonumber(ho)
pop("'ho számmal="', tostring(honum));
if honum then
if 1 > honum or honum > 12 then return false end
-- hónap sorszáma hibás
return false
end
if nap then
 
local napnum= tonumber(nap);
if nap then
pop("nap számmal=",tostring(napnum));
local napnum = tonumber(nap)
if not (napnum and 1 <= napnum and napnum <= 31) then return false end
pop('nap számmal=', tostring(napnum))
if szokoev (ev) then honaphossz[2] = 29 else honaphossz[2] = 28 end
if honaphossz[honum]not (napnum and 1 <= napnum thenand napnum <= 31) then
return false
pop("túl a hónaphatáron a nap");
end
return false -- nap sorszáma hibás
if szokoev(ev) then
else pop("ellenőrzött év,hó, nap",ev,ho,nap);
honaphossz[2] = 29
end
else
end
honaphossz[2] = 28
end
end end
if honaphossz[honum] < napnum then
de=ev
pop('túl a hónaphatáron a nap')
if ho and ho ~= ''then de=de..'-'..ho end
return false -- nap sorszáma hibás
if nap then de=de..'-'..nap end
else
pop("numdate átadja:",de);return de
pop('ellenőrzött év, hó, nap', ev, ho, nap)
end
end
end
end
end
de = ev
if ho and ho ~= '' then
de = de .. '-' .. ho
end
if nap then
de = de .. '-' .. nap
end
pop('numdate átadja:', de)
return de
end
 
 
 
local function hudate(de)
pop("'hudate indul"')
local i, j, ev, ho, nap, maradek
pop(de)
ev = string.match (de," '^%d%d%d%d?"') -- ééé v. éééé levágva ev-be
pop("'ev="', ev)
local hostring = string.match(de," '%a+"')
if hostring then
ho = string.sub(hostring, 1, 3)
end
pop("ho=", ho);
if ho then
i,j = string.find (de, ho)
maradek = string.gsub (string.sub(de,j+1,-1),"%p",'')
nap = string.match(maradek,"%d%d?");
pop("nap=", nap);
end
if isRoman(ho) then ho= decimal[ho]
if ho then ho= tostring(ho) else return false end
-- a római számból decimálist csinál a tábla, ebből ismét string kell
-- , hogy az if utasítás végén egynemű string hónapunk legyen
pop("ho rómaiból =", ho);
else
ho = honapsorszamekezetnelkul[ho]
end
if ho then local honum= tonumber(ho)
pop("honum=",tostring(honum));
if honum then
if 1 > honum or honum > 12 then return false end-- hónap sorszáma hibás
if nap then
local napnum= tonumber(nap);
pop("napnum=",tostring(napnum));
if not (napnum and 1 <= napnum and napnum <= 31) then return false end
if szokoev (ev) then honaphossz[2] = 29 else honaphossz[2] = 28 end
if honaphossz[honum] < napnum then
pop("fals nap");
return false -- nap sorszáma hibás
else pop("másodszor",ev,ho,nap);
end
end
end
end
if ho~= nil and #ho < 2 then ho = '0'..ho end
de =ev
if ho then de=de..'-'..ho end
if nap then de = de..'-'..nap end
return de
end
 
pop('ho=', ho)
if ho then
i, j = string.find(de, ho)
maradek = string.gsub(string.sub(de, j+1, -1), '%p', '')
nap = string.match(maradek, '%d%d?')
pop('nap=', nap)
end
if isRoman(ho) then
ho = decimal[ho]
if ho then
-- A római számból decimálist csinál a tábla, ebből ismét string kell,
-- hogy az if utasítás végén mindenképpen string hónapunk legyen
ho = tostring(ho)
else
return false
end
pop('ho rómaiból = ', ho)
else
ho = honapsorszamekezetnelkul[ho]
end
if ho then
local honum = tonumber(ho)
pop('honum=', tostring(honum))
if honum then
if 1 > honum or honum > 12 then
-- A hónap sorszáma hibás
return false
end
 
if nap then
--[[ datumszuro(de)
local napnum = tonumber(nap)
megszűri a numerikus éééé-hh-nn , illetve a Dec. 10, 2001, 10 january 2001, 2001. december 10 formákat
pop('napnum=', tostring(napnum))
, leellenőrzi a dátumot (hónaphossz, létező hónap sorszám )
if not (napnum and 1 <= napnum and napnum <= 31) then
és valamennyiből az ISO 8604 szabvány szerinti dátumot csinál
return false
end
--]]
if szokoev(ev) then
local function datumszuro(de)
honaphossz[2] = 29
else
local log, cserelt
honaphossz[2] = 28
if not de then return ou, false
end
else de, cserelt =string.gsub(de,'%.','-');
if honaphossz[honum] < napnum then
if cserelt == 2 then de = string.gsub (de, '%-*$','') end -- ha a végén van kötőjel, lecsipjük
pop('fals nap')
end
return false -- nap sorszáma hibás
pop("datumszurodatuma paramétere= ", de);
else
de= ekezet_le(de)
pop('másodszor', ev, ho, nap)
pop("ékezetek nélküli dátum=", de)
end
de=string.gsub(de,'%s','')
end
local i,j = string.match(de,"()%d%d%d%d?()")
end
if not j then return ou, false -- mert nincs év a dátumban
end
else pop(i,j,string.sub(de,i,j-1))
if ho~= nil and #ho < 2 then
end -- ha j==5, akkor a dátum elején áll az év, magyar a dátum vagy ISO
ho = '0' .. ho
if not de or type(de)~= 'string' then return ou, false end
end
local d2= string.gsub(de,"[%p%-]",'') -- punctuation, kötjel is üres lesz
de = ev
pop("d2 van benne kötjel?", d2)
if ho then
d2 = tonumber (d2)
de = de .. '-' .. ho
pop("d2 mint szám", d2)
end
if d2 then
if nap then
--[[ a dátum számjegyes
de = de .. '-' .. nap
adB1) keresünk %d%d%d%d? mintával négy, vagy háromjegyű decimálist a dátumban
end
ha van, megnézzük, hogy hol van ő a dátreturn 1, false endumban,
return de
ha elől akkor tényleg magyar a dátum (átadjuk a kezelőjének: ennek nagy része már megvan az datumoutput-ban)
end
különben ad B2) höz
--]]
log = numdate (de)
if log == false then return ou, false end-- mert hibás a dátum
else -- betűk is vannak d2-ben
local i,j = string.match(de,"()%d%d%d%d?()")
if j==5 then log=hudate(de)-- mert magyar a dátum
pop("hudate utáni dátum= ",log )-- meghívjuk a magyar dátum lekezelését log vagy false, vagy a magyar dátum
else log=en_to_hu (de);
pop("en_to_hu utáni dátum= ",log);
end
 
end -- if d2
 
--[[ datumszuro(de)
if log == false then return ou, false end-- mert hibás a dátum
megszűri a numerikus éééé-hh-nn, illetve a Dec. 10, 2001, 10 january 2001, 2001. december 10 formákat,
leellenőrzi a dátumot (hónaphossz, létező hónap sorszám)
és valamennyiből az ISO 8604 szabvány szerinti dátumot csinál
--]]
local function datumszuro(de)
local log, cserelt
if not de then
return ou, false
else
de, cserelt = string.gsub(de, '%.', '-')
if cserelt == 2 then
de = string.gsub(de, '%-*$', '')
end -- ha a végén van kötőjel, lecsipjük
end
pop('datumszurodatuma paramétere= ', de)
de = ekezet_le(de)
pop('ékezetek nélküli dátum=', de)
de = string.gsub(de, '%s', '')
local i, j = string.match(de, '()%d%d%d%d?()')
if not j then
return ou, false -- mert nincs év a dátumban
else
-- ha j == 5, akkor a dátum elején áll az év, magyar a dátum vagy ISO
pop(i, j, string.sub(de, i, j-1))
end
if not de or type(de)~= 'string' then
return ou, false
end
local d2 = string.gsub(de, '[%p%-]', '') -- punctuation, kötjel is üres lesz
pop('d2 van benne kötjel?', d2)
d2 = tonumber(d2)
pop('d2 mint szám', d2)
if d2 then
--[[ a dátum számjegyes
adB1) keresünk %d%d%d%d? mintával négy- vagy háromjegyű decimálist a dátumban
ha van, megnézzük, hogy hol van ő a dátreturn 1, false endumban,
ha elől akkor tényleg magyar a dátum (átadjuk a kezelőjének: ennek nagy része már megvan az datumoutput-ban)
különben ad B2) höz
--]]
log = numdate(de)
if log == false then
-- hibás a dátum
return ou, false
end
else
-- betűk is vannak d2-ben
local i, j = string.match(de, '()%d%d%d%d?()')
if j == 5 then
log = hudate(de)-- mert magyar a dátum
pop('hudate utáni dátum= ', log)-- meghívjuk a magyar dátum lekezelését log vagy false, vagy a magyar dátum
else
log = en_to_hu(de)
pop('en_to_hu utáni dátum= ', log)
end
end
 
if log == false then
pop("dátum a dátumszűrés végén =",log);
return ou, log -- azazhibás a dátum
return ou, false
end-- datumszuro
end
 
pop('dátum a dátumszűrés végén = ', log)
return ou, log -- azaz a dátum
end
 
local function honapnevesdate (isodate)
local ev, ho, nap, i, j,k,l, maradek, de
if not isodate then
return
end
isodate = string.gsub(isodate, '%s+', '')
i, j = string.find(isodate, '-')
if i then
ev, maradek = string.match(isodate," '(%d+)%s*%-%s*([%d%p%-]+)"') --, ho, nap --%-%s*(%d+)%s*%s*(%d+)%s"
pop('isodate ev,maradek=', ev, maradek)
i, j = string.find(maradek, '-')
if i then
ho, nap = string.match(maradek," '(%d+)%s*%-%s*([%d%p%-]+)"')
pop("'isodate ho , nap =" ', tostring(ho), nap);
else
ho = maradek
end
ho = honapok[tonumber(ho)]
else
else ev= isodate
ev = isodate
end
end
de =ev
de = ev
if ho then de=de..'. '..ho end
if ho then
if nap then de = de .. ' ' .. tonumber(nap) .. '.' end
de = de .. '. ' .. ho
return de
end
if nap then
de = de .. ' ' .. tonumber(nap) .. '.'
end
return de
end
 
-- csak a dátumszűrés és a honapnevesdate publikus a modulból
local q = {
datumszuro = datumszuro,
datumszuro= datumszuro, -- csak a dátumszűrés és a honapnevesdate publikus a modulból
honapnevesdate = honapnevesdate
honapnevesdate=honapnevesdate, -- valami oknál fogva kell itt a vessző neki
}
return q