Modul:Homokozó/Pepo41/Idegen nyelvről magyarra dátumoz
Homokozó/Pepo41/Idegen nyelvről magyarra dátumoz[mi ez?] • [dokumentáció: mutat, ] • [tesztek: létrehozás]
dk={}
honapok = {"jan.","feb.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."}
local honapsorszamekezetnelkul={}
honapsorszamekezetnelkul["jan"] = "01"
honapsorszamekezetnelkul["feb"] = "02"
honapsorszamekezetnelkul["mar"] = "03"
honapsorszamekezetnelkul["apr"] = "04"
honapsorszamekezetnelkul["maj"] = "05"
honapsorszamekezetnelkul["jun"] = "06"
honapsorszamekezetnelkul["jul"] = "07"
honapsorszamekezetnelkul["aug"] = "08"
honapsorszamekezetnelkul["sze"] = "09"
honapsorszamekezetnelkul["okt"] = "10"
honapsorszamekezetnelkul["nov"] = "11"
honapsorszamekezetnelkul["dec"] = "12"
dk.hibavan = false
function dk.error ( about )
-- Enclose errorMsg with <span>
-- Precondition:
-- about -- string
dk.hibavan = true
local r = about
if type( about ) == "string" then
if #about == 0 then
r = "Error in Lua"
end
else
r = tostring( about )
end
return "<span class=\'error\'>" .. r .. "</span>, "
end -- dk.error()
--[[
Idegen nyelvű (angol, német, francia, olasz, spanyol, portugál) hónapnevekből csinál rövidített,
magyar ékezet nélküli három betűs hónapneveket
az Forine_to_hu(dátum) függvényhez szolgál segédfüggvényként
--]]
function dk.month_to_hu(m)
local ou,alfa,eb,ub,e2b=''
m= string.gsub (m,' ','') -- cseréljük fel a szóközöket üressel
m= string.gsub (m,'ä','a') -- März , mars problem ôû
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
ou=ou.."1- alfa="..alfa..' '
m= string.sub (m,1,3) --három betünk van
eb = string.sub (m,1,1)
if eb =='m' then ub=string.sub (m,-1,-1)
if ub == 'i' then m='maj'
elseif ub == 'r' then m='mar'
elseif ub == 'y' then m='maj'
elseif ub == 'g' then m='maj' --maggio
end
elseif eb =='e' then m='jan'--spanyol
elseif eb =='g' then e2b = string.sub (m,1,2)
if e2b == 'ge' then m='jan'
elseif e2b == 'gi' then m='jun' --- olasz
end
elseif eb =='j' then
if string.sub (m,2,2) == 'a'then m='jan'
elseif string.sub (m,3,3) == 'n' then m='jun'
elseif string.sub (m,3,3) == 'i'then m='jul'
end
elseif eb =='a' then e2b = string.sub (m,1,2)
if e2b == 'ap'or e2b == 'av'or e2b == 'ab' then m='apr' --- első betű a apr, av, au, ao
elseif e2b =='au'or e2b == 'ag'or e2b == 'ao' then m='aug'
end
elseif eb =='f' then m='feb'
elseif eb =='l' then m='jul' --olasz
elseif eb =='s' then m='sze'
elseif eb =='o' then m='okt'
elseif eb =='n' then m='nov'
elseif eb =='d' then m='dec'
else return false
end
else return false
end --if alfa
return m
end-- function
--[[ Forine_to_hu(dátum)
Idegen nyelvű (angol, német, francia, olasz, spanyol, portugál) dátumokból csinál magyar rövidített hónapneveket
tartalmazó dátumot a külföldi források átvételéhez más modulokon belül
Felhasználja a month_to_hu függvényt
Kimenete: magyar dátum rövid hónapnevekkel
--]]
function dk.Forine_to_hu(de)
--Az angol dátumokat jó lenne felismernie: "Dec. 10, 2013". string.lower (s)
local i,j,ho,ou,betuk,maradek,sz,e2b,e,e2k,ev,nap=''
if type(de)== 'string'then
de= string.gsub (de,' ','') -- cseréljük fel a szóközöket üressel
de= string.gsub (de,'%.','-')-- cseréljük fel a pontot kötőjellel dec-10,2013
de= string.gsub (de,'é','e')--éôûäF
de= string.gsub (de,'ô','o')--éôûä
de= string.gsub (de,'û','u')--éôûä
de= string.gsub (de,'ä','a')--éôûä
de=string.lower (de) -- minden kisbetűs
e2k = string.sub(de,1,2)
sz =string.match(e2k,"[0-9]+")-- keressünk a dátumba n számokat
if not sz then
-- USA forma jött
ho= string.match(de,"[a-z]+"); ou=' ;'.."hónap?", ho..' '
i,j = string.find(de,ho)
maradek = string.sub(de,j+1,-1)
ou=ou..' ;'.."maradt?"..maradek..' '
ev=string.sub(de,-4,-1);ou=ou..' ;'.."év?".. ev..' '
nap=string.sub(de,j+1,-5);ou=ou..' ;'.."nap?".. nap..' '
de=ho..nap..','.. ev;ou=ou..' '.."átalakult?".. de..' '
else -- számmal indul mert little endian
ou=" ;számok?".. sz..' '
nap=sz
i,j = string.find(de,sz)
maradek = string.sub(de,j+1,-1)
ou=ou..' ;'.."2maradt?"..maradek..' '
ho= string.match(maradek,"[a-z]+"); ou=ou..' ;'.."2hónap?".. ho..' '
ev=string.sub(de,-4,-1);ou=ou..' ;'.."év2?".. ev..' '
de=ho..nap..','.. ev;ou=ou..' ;'.."átalakult?".. de..' '
end
ou=" ;1- datum= "..de..' '
betuk =string.match(de,"[a-z%-éôûä]+")-- keressünk a dátumban betűt
ou=ou.." ;1- betuk= "..betuk..' '
i,j = string.find(de,betuk)
if i==1 then -- nézzük, meg hogy ő az első-e (english)
ho=dk.month_to_hu(string.sub(betuk,1,3))
ou=ou..' ;'.."1-3 betük="..ho..' '
ou=ou.."1- hó="..ho..' '
ou=ou.." i = "..tostring(i).." és j= "..tostring(j)..' '
maradek =string.match(de,"[^a-z%-éôûä]+") -- -10,2013válasszuk le a hónap nevét
ou=ou..' '..maradek..' '
ev = string.sub(maradek,-4,-1)
ou=ou.." ;1- év="..ev ..' '
ou=ou.." ;1- maradék="..maradek ..' '
k,l = string.find(maradek,',')
if k then
ou=ou.." ;vessző indexe="..tostring(k) ..' '
nap = string.sub(maradek,1,k-1)
else ou = ou .."nincs vessző ";return false , ou
end
ou=ou.." ;1- nap="..nap ..' '
ou=ou..' '..ho..' '
ou=ou..' '..dk.month_to_hu(ho)..' '
if ho then ho=honapsorszamekezetnelkul[dk.month_to_hu(ho)]
ou=ou.." ;2- hó="..ho..' '
else return false,ou end
--[[
if honapsorszamekezetnelkul[ho] then
-- helyettesítsük a magyar rövid hónapnévnek megfelelő sorszámmal 12-10,2013
else return false -- nincs hónap a dátumban
end
--]]
s=ev
s=s..'. '..honapok[tonumber(ho)]..' '..nap..'.'
end
return s, ou
else return false, ou
end
end
function dk.getArg (arg,alternativarg, assign ) -- itt eredetileg a frame nem paraméter
-- Retrieve template argument
-- Precondition:
-- arg -- string or number; argument identifier
-- assign -- any, optional; default value
-- Uses:
-- mw.getCurrentFrame()
--local r = mw.getCurrentFrame().args[ arg ] állt itt eredetileg
-- a kurrens frame argumentumai közül az arg kulccsal megadott
local r,r1,r2 = nil
-- a frame nil értéket ad, ha nem szerepel a paraméter, ''-et ad, ha szerepel, de nincs benne karakter
if args[ arg ] ~=nil and args[ arg ] ~='' then r1 = args[ arg ] end
-- r1 nil marad, ha a paramétert nem adták meg, vagy üresen adták meg
if args[ alternativarg ]~= nil and args[ alternativarg ] ~='' then r2 = args[ alternativarg ] end
-- r2 nil marad, ha az alternatív paramétert nem adták meg, vagy üresen adták meg
if r1 then r = r1 else
if r2 then r = r2 end
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
end
return r -- ha r string tipus, vagy nil
end
-- idegen dátumokat magyarra konvertál
local function Fdate_to_HU(frame)
local datum
datum = dk.getArg('dátum', 'date')
local ki
datum, ki = dk.Forine_to_hu(datum)
if datum then datum= datum else datum = dk.error("hibás dátum") end
if datum then return datum --[[..ki -]] end--ha nem false a hívott fgv. eredménye
end
function dk.run(frame)
local pframe = frame:getParent()
args = pframe.args -- azok a paraméterek, amelyek a sablont kisérik a Pepo41/CCitPer --sablon hivása oldalon
config = frame.args -- az #invoke utasításban átadott paraméterek
return Fdate_to_HU(frame)
end
return dk
--[[
honapok = {"jan",...}
honapsorszamekezetnelkul={"jan",...} "01"...
dk.error ( about )
dk.month_to_hu(m)
dk.Forine_to_hu(de)
dk.getArg (arg,alternativarg, assign )
Fdate_to_HU(frame)
dk.run(frame)
--]]