Módulo:Wikidata/Formatos educación
< Módulo:Wikidata
Revisión del 16:26 28 jul 2018 de es>Juan Mayordomo (require ya carga el módulo una sola vez)
La documentación para este módulo puede ser creada en Módulo:Wikidata/Formatos educación/doc
local p = {}
-- Funciones de otros módulos
local moduloTablas = require('Módulo:Tablas')
local elementoTabla = moduloTablas.elemento
local moduloWikidata = require('Módulo:Wikidata')
local formatoIdEntidadWikidata = moduloWikidata.formatoIdEntidad
local moduloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local enlazar = moduloWikidataFormatos.enlazar
local obtenerDatos = moduloWikidataFormatos.obtenerDatos
local formatoPeriodoWikidata = moduloWikidataFormatos.formatoPeriodo
local grados = {
['Q163727'] = {abreviatura = 'Grado', enlace = 'Título de grado'}, -- Bachelor
['Q1765120'] = {abreviatura = 'B.A.', enlace = 'Bachelor of Arts'},
['Q2878277'] = {abreviatura = 'B.F.A.', enlace = 'Bachelor of Fine Arts'},
['Q798137'] = {abreviatura = 'B.L.', enlace = 'Bachelor of Laws'},
['Q787674'] = {abreviatura = 'B.S.', enlace = 'Bachelor of Science'},
['Q749020'] = {abreviatura = 'Lic.', enlace = 'Licenciatura'},
['Q691532'] = {abreviatura = 'Lic. en Derecho', enlace = 'Licenciatura en Derecho'},
['Q183816'] = {abreviatura = 'Maestría', enlace = 'Maestría'},
['Q2091008'] = {abreviatura = 'M.A.', enlace = 'Master of Arts'},
['Q191701'] = {abreviatura = 'M.B.A.', enlace = 'Maestría en Administración de Empresas'},
['Q4175466'] = {abreviatura = 'M.F.A.', enlace = 'Máster en Bellas Artes'},
['Q950900'] = {abreviatura = 'M.S.', enlace = 'Master of Science'},
['Q849697'] = {abreviatura = 'Doc.', enlace = 'Doctorado'},
['Q4618975'] = {abreviatura = 'Doc.', enlace = 'Doctorado'}, -- doctor
['Q3033550'] = {abreviatura = 'Doc.', enlace = 'Doctorado (Francia)'},
['Q959320'] = {abreviatura = 'Doc. of Law', enlace = 'Doctor of Law'},
['Q1540185'] = {abreviatura = 'J.D.', enlace = 'Juris Doctor'},
['Q6518699'] = {abreviatura = 'L.L.D.', enlace = 'LLD'},
['Q913404'] = {abreviatura = 'M.D.', enlace = 'Doctor en Medicina'},
['Q752297'] = {abreviatura = 'Ph.D.',enlace = 'Philosophiæ doctor'},
}
local especialidades = {
['Q222749'] = {etiqueta = 'Actuación', enlace = 'Actuación'},
['Q12271'] = {etiqueta = 'Arquitectura', enlace = 'Arquitectura'},
['Q21198'] = {etiqueta = 'Ciencias de la Computación', enlace = 'Ciencias de la computación'},
['Q7748'] = {etiqueta = 'Derecho', enlace = 'Derecho'},
['Q4932206'] = {etiqueta = 'Jurisprudencia', enlace = 'Ciencia del derecho'},
['Q382995'] = {etiqueta = 'Ciencias del Derecho', enlace = 'Ciencias del derecho'},
['Q8134'] = {etiqueta = 'Ciencias Económicas', enlace = 'Ciencia económica'},
['Q5891'] = {etiqueta = 'Filosofía', enlace = 'Filosofía'},
['Q413'] = {etiqueta = 'Física', enlace = 'Física'},
['Q309'] = {etiqueta = 'Historia', enlace = 'Historia'},
['Q395'] = {etiqueta = 'Matemáticas', enlace = 'Matemáticas'},
['Q11190'] = {etiqueta = 'Medicina', enlace = 'Medicina'},
['Q11030'] = {etiqueta = 'Periodismo', enlace = 'Periodismo'},
['Q36442'] = {etiqueta = 'Ciencias Políticas', enlace = 'Ciencia política'},
['Q9418'] = {etiqueta = 'Psicología', enlace = 'Psicología'},
['Q2329'] = {etiqueta = 'Química', enlace = 'Química'},
['Q21201'] = {etiqueta = 'Sociología', enlace = 'Sociología'},
['Q34178'] = {etiqueta = 'Teología', enlace = 'Teología'},
}
function p.formatoEducadoEn(valor, opciones, frame, calificativos)
-- Función que devuelve para un lugar de educación, por ejemplo Universidad Harvard.
--
-- Funciones internas
--
function obtenerGrado(idGrado, opciones)
if not idGrado then
return
end
local grado = grados[idGrado]
if grado then
return enlazar(grado.enlace, grado.abreviatura, idGrado,opciones)
else
-- En el caso de que el grado no sea uno de los grados de la tabla interna
return formatoIdEntidadWikidata(idGrado, opciones)
end
end
function obtenerEspecializacion(idEspecialidad, opciones)
if not idEspecialidad then
return
end
local especialidad = especialidades[idEspecialidad]
if especialidad then
return enlazar(especialidad.enlace, especialidad.etiqueta, idEspecialidad,opciones)
else
-- En el caso de que la especialidad no sea uno de las especialidades de la tabla interna
return formatoIdEntidadWikidata(idEspecialidad, opciones)
end
-- A medias
return formatoIdEntidadWikidata(idEspecialidad, opciones)
end
-- Variables
if not valor then
return
end
-- Obtener los datos
local enlaceLugarEducacion, etiquetaLugarEducacion, idEntidadLugarEducacion = obtenerDatos(valor)
local lugarEducacion = enlazar(enlaceLugarEducacion, etiquetaLugarEducacion, idEntidadLugarEducacion,opciones)
if not lugarEducacion then
return
end
-- Grados
local grado
local declaracionGrados = elementoTabla(calificativos,'P512')
if declaracionGrados then
local grados = {}
local idGrado
for k, v in pairs(declaracionGrados) do
idGrado = elementoTabla(v,'datavalue','value','id')
if idGrado then
table.insert(grados, obtenerGrado(idGrado, opciones))
end
end
grado = mw.text.listToText( grados, ', ', ' y ' )
end
-- Especialización
local especializacion
local declaracionEspecializaciones = elementoTabla(calificativos,'P812')
if declaracionEspecializaciones then
local especializaciones = {}
local idEspecializacion
for k, v in pairs(declaracionEspecializaciones) do
idEspecializacion = elementoTabla(v,'datavalue','value','id')
if idEspecializacion then
table.insert(especializaciones, obtenerEspecializacion(idEspecializacion, opciones))
end
end
especializacion = mw.text.listToText( especializaciones, ', ', ' y ' )
end
-- Añadir al grado la especialización
local gradoEspecializacion
if grado and especializacion then
gradoEspecializacion = grado .. ' en ' .. especializacion
else
gradoEspecializacion = grado or especializacion
end
local periodo = formatoPeriodoWikidata(calificativos, opciones)
-- Casos
--
if gradoEspecializacion and periodo then
return lugarEducacion .. ' <small>(' .. gradoEspecializacion .. '; ' .. periodo .. ')</small>'
elseif gradoEspecializacion then
return lugarEducacion .. ' <small>(' .. gradoEspecializacion .. ')</small>'
elseif periodo then
return lugarEducacion .. ' <small>(' .. periodo .. ')</small>'
else
return lugarEducacion
end
--if true then return require('Módulo:Tablas').tostring(calificativos) end -- Pruebas
end
-- Alias para simplificar el uso desde la plantilla propiedad
--
p['educado en'] = p.formatoEducadoEn
return p