Módulo:Zona de pruebas/Eloy/Español

De Wikipedia, la enciclopedia libre
Este módulo no tiene página de documentación[crear]
local dameArgs = require('Módulo:Argumentos').obtenerArgumentos
local p={}

-- \function Devuelve 'y' o 'e' según corresponda antes de la palabra pasada como argumento

p._y_e_datos=
    {
--        ['en_i4']= -- Palabras en inglés, como "iBook"
--            {
--                ['boo']=1,['mac']=1,['pad']=1,['paq']=1,['ped']=1,['pho']=1,['pod']=1,['tun']=1,['car']=1
--            },
        ['en_i5']= -- Frases en inglés como "I am …" o "I begin…"
            {
                ['am ']=1,['beg']=1,['bel']=1,['bet']=1,['cal']=1,['can']=1,['clo']=1,['cou']=1,['did']=1,
                ['do ']=1,['don']=1,['dre']=1,['dri']=1,['fee']=1,['fou']=1,['get']=1,['got']=1,['had']=1,
                ['hat']=1,['hav']=1,['jus']=1,['kee']=1,['kil']=1,['kis']=1,['kne']=1,['kno']=1,['lik']=1,
                ['liv']=1,['loo']=1,['lov']=1,['me ']=1,['mig']=1,['mis']=1,['nee']=1,['nev']=1,['now']=1,
                ['pho']=1,['put']=1,['rem']=1,['rob']=1,['saw']=1,['say']=1,['see']=1,['set']=1,['sho']=1,
                ['sta']=1,['sti']=1,['swe']=1,['thi']=1,['tho']=1,['tur']=1,['wal']=1,['wan']=1,['was']=1,
                ['wil']=1,['wis']=1,['won']=1,['wou']=1,['wri']=1
            },
        ['en_e4']=
            {
                ['agl']=1,['asy']=1,['ast']=1,
            },
    }

function p._y_e(palabra)
    local es -- 1 significa que sabe que es en español, 0 en inglés, y nil que no sabe
    local pal=mw.ustring.lower(palabra)     -- convierte a minúscula
    local i = mw.ustring.sub(pal,1,1)       -- i=primera letra
    --local l = mw.ustring.len(pal)           -- l=largo palabra

    if(1==#{mw.ustring.match(palabra,'^i[A-Z].*')}) then return 'y' end -- minúscula i seguida de mayúscula sin tilde, en inglés se pronuncia 'ai'
    if(1==#{mw.ustring.match(palabra,'^e[A-Z].*')}) then return 'e' end -- minúscula e seguida de mayúscula sin tilde, en inglés se pronuncia 'i'

    if ('¡'==i) or ('¿'==i) then
        pal=mw.ustring.sub(pal,2)
        i = mw.ustring.sub(pal,1,1)
        --l=l-1
        es=1
    end

    if ('h'==i) then
        if ('hi '==mw.ustring.sub(pal,1,3)) or ('hi-'==mw.ustring.sub(pal,1,3)) or
          (1==#{mw.ustring.match(pal,'^hi[0-9].*')}) then return 'y' end
        pal=mw.ustring.sub(pal,2)
        i = mw.ustring.sub(pal,1,1)
        --l=l-1
    end
    if ('í'==i) then
        return 'e'
    end
   
    if ('i'==i) then
        if 1==#{mw.ustring.match(pal,'^i[aeoáéó].*')} then return 'y' end
        if(1~=es) then -- Si no sabe si es español
            --Reemplazado por la comprobación de 
            --if(1==p._y_e_datos.en_i4[mw.ustring.sub(pal,2,4)]) then return 'y' end            
            if ('i '==mw.ustring.sub(pal,1,2)) and (1==p._y_e_datos.en_i5[mw.ustring.sub(pal,3,5)]) then return 'y' end
            -- Casos en los que usa la palabra original, en lugar de recortada y en minúcula (pal)
            if ("I'"==mw.ustring.sub(palabra,1,2)) then return 'y' end
            if('high'==mw.ustring.sub(mw.ustring.lower(palabra),1,4)) then return 'y' end
        end
        return 'e'
    end
    
    if ('y'==i) then
        if 1==#{mw.ustring.match(pal,'^y[aeiouáéíóú ].*')} then return 'y' end
        return 'e'
    end
    if ('e'==i) then
        if(1~=es) then -- Si no sabe si es español
            if('e-'==mw.ustring.sub(pal,1,2)) then return 'e' end
            if(1==p._y_e_datos.en_e4[mw.ustring.sub(pal,2,4)]) then return 'e' end            
        end
    end

--mw.log('def',palabra,i)
    return 'y'
end

function p.y_e(marco)
	return p._y_e(dameArgs(marco)[1])
end

return p
---- Para testear la funciñón p._y_e escribir:
---- =require('Módulo:Zona de pruebas/Eloy/Español/tests').test_y_e(p._y_e)