Modul:Homokozó/Pepo41/Idegen nyelvről magyarra dátumoz

A Wikipédiából, a szabad enciklopédiából

Homokozó/Pepo41/Idegen nyelvről magyarra dátumoz[mi ez?] • [dokumentáció: mutat, szerkeszt] • [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)
--]]