Módulo:Zona de pruebas/Eloy/Español
Apariencia
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)