Ir al contenido

Módulo:Wikidata/Formatos educación

De Biquipedia

La documentación para este módulo puede ser creada en Módulo:Wikidata/Formatos educación/doc

local p = {}

-- Funcions d'atros módulos
local moduloTablas               = require('Módulo:Tablas')
	local elementoTabla          = moduloTablas.elemento
local moduloWikidata             = require('Módulo:Wikidata')
	local formatoIdEntidatWikidata = moduloWikidata.formatoIdEntidat
local moduloWikidataFormatos     = require('Módulo:Wikidata/Formatos')
	local enlazar                = moduloWikidataFormatos.enlazar
	local obtenerDatos           = moduloWikidataFormatos.obtenerDatos	
	local formatoPeriodoWikidata = moduloWikidataFormatos.formatoPeriodo	

local graus = {
	['Q163727']  = {abreviadura = 'Grado', enlace = 'Títol de grau'}, -- Bachelor
	['Q1765120'] = {abreviadura = 'B.A.', enlace = 'Bachelor of Arts'},
	['Q2878277'] = {abreviadura = 'B.F.A.', enlace = 'Bachelor of Fine Arts'},
	['Q798137']  = {abreviadura = 'B.L.', enlace = 'Bachelor of Laws'},	
	['Q787674']  = {abreviadura = 'B.S.', enlace = 'Bachelor of Science'},
	['Q749020']  = {abreviadura = 'Lic.', enlace = 'Licenciatura'},
	['Q691532']  = {abreviadura = 'Lic. en Dreito', enlace = 'Licenciatura en Dreito'},
	['Q183816']  = {abreviadura = 'Maestría', enlace = 'Maestría'},
	['Q2091008'] = {abreviadura = 'M.A.', enlace = 'Master of Arts'},
	['Q191701']  = {abreviadura = 'M.B.A.', enlace = 'Maestría en Administración d\'Interpresas'},
	['Q4175466'] = {abreviadura = 'M.F.A.', enlace = 'Máster en Bellas Artes'},
	['Q950900']  = {abreviadura = 'M.S.', enlace = 'Master of Science'},
	['Q849697']  = {abreviadura = 'Doc.', enlace = 'Doctorau'},
	['Q4618975'] = {abreviadura = 'Doc.', enlace = 'Doctorau'},	-- doctor
	['Q3033550'] = {abreviadura = 'Doc.', enlace = 'Doctorau (Francia)'},	
	['Q959320']  = {abreviadura = 'Doc. of Law', enlace = 'Doctor of Law'},
	['Q1540185'] = {abreviadura = 'J.D.', enlace = 'Juris Doctor'},
	['Q6518699'] = {abreviadura = 'L.L.D.', enlace = 'LLD'},
	['Q913404']  = {abreviadura = 'M.D.', enlace = 'Doctor en Medecina'},	
	['Q752297']  = {abreviadura = 'Ph.D.',enlace = 'Philosophiæ doctor'},	
}

local especialidatz = {
	['Q222749']  = {etiqueta = 'Actuación', enlace = 'Actuación'},
	['Q12271']   = {etiqueta = 'Arquitectura', enlace = 'Arquitectura'},	
	['Q21198']   = {etiqueta = 'Sciencias d\'a Computación', enlace = 'Sciencias d\'a computación'},		
	['Q7748']    = {etiqueta = 'Dreito', enlace = 'Dreito'},	
	['Q4932206'] = {etiqueta = 'Churisprudencia', enlace = 'Sciencia d\'o dreito'},
	['Q382995']  = {etiqueta = 'Sciencias d\'o Dreito', enlace = 'Sciencias d\'o dreito'},	
	['Q8134']    = {etiqueta = 'Sciencias Económicas', enlace = 'Sciencia económica'},
	['Q5891']    = {etiqueta = 'Filosofía', enlace = 'Filosofía'},
	['Q413']     = {etiqueta = 'Física', enlace = 'Física'},	
	['Q309']     = {etiqueta = 'Historia', enlace = 'Historia'},
	['Q395']     = {etiqueta = 'Matematicas', enlace = 'Matematicas'},		
	['Q11190']   = {etiqueta = 'Medecina', enlace = 'Medecina'},		
	['Q11030']   = {etiqueta = 'Periodismo', enlace = 'Periodismo'},
	['Q36442']   = {etiqueta = 'Sciencias Politicas', enlace = 'Sciencias politicas'},
	['Q9418']    = {etiqueta = 'Psicolochía', enlace = 'Psicolochía'},	
	['Q2329']    = {etiqueta = 'Quimica', enlace = 'Quimica'},
	['Q21201']   = {etiqueta = 'Sociolochía', enlace = 'Sociolochía'},
	['Q34178']   = {etiqueta = 'Teología', enlace = 'Teología'},
}

function p.formatoEducauEn(valor, opcions, frame, calificativos)
	-- Función que torna un puesto d'educación, por eixemplo Universidad Harvard.
	
	--
	-- Funcions internas
	--
	
	function obtenerGrau(idGrau, opcions)
		if not idGrau then
			return
		end
		
		local grau = graus[idGrau]
		
		if grau then
			return enlazar(grau.enlace, grau.abreviadura, idGrau,opcions)
		else
			-- En o caso de que o grau no siga un d'os graus d\'a tabla interna
			return formatoIdEntidatWikidata(idGrau, opcions)
		end
	end
	
	function obtenerEspecializacion(idEspecialidat, opcions)
		if not idEspecialidat then
			return
		end		
		
		local especialidat = especialidatz[idEspecialidat]
		
		if especialidat then
			return enlazar(especialidat.enlace, especialidat.etiqueta, idEspecialidat,opcions)
		else
			-- En el caso de que la especialidat no sea uno d'as especialidatz d\'a tabla interna
			return formatoIdEntidatWikidata(idEspecialidat, opcions)
		end
		
		-- A medias
		return formatoIdEntidatWikidata(idEspecialidat, opcions)
	end	
	
	-- Variables
	if not valor then
		return
	end
	
	-- Obtener los datos
	
	local enlacePuestoEducacion, etiquetaPuestoEducacion, idEntidatPuestoEducacion = obtenerDatos(valor)
	local puestoEducacion     = enlazar(enlacePuestoEducacion, etiquetaPuestoEducacion, idEntidatPuestoEducacion,opcions)
	
	if not puestoEducacion then
		return
	end
	
	-- Graus
	local grau
	local declaracionGraus = elementoTabla(calificativos,'P512')
		
	if declaracionGraus then
		local graus = {}
		local idGrau
	
		for k, v in pairs(declaracionGraus) do
			idGrau = elementoTabla(v,'datavalue','value','id')
			
			if idGrau then
				table.insert(graus, obtenerGrau(idGrau, opcions))
			end
		end
		
		grau = mw.text.listToText( graus, ', ', ' y ' )
	end

	-- Especialización
	local especializacion
	local declaracionEspecializacions = elementoTabla(calificativos,'P812')
		
	if declaracionEspecializacions then
		local especializacions = {}
		local idEspecializacion
	
		for k, v in pairs(declaracionEspecializacions) do
			idEspecializacion = elementoTabla(v,'datavalue','value','id')
			
			if idEspecializacion then
				table.insert(especializacions, obtenerEspecializacion(idEspecializacion, opcions))
			end
		end
		
		especializacion = mw.text.listToText( especializacions, ', ', ' y ' )
	end
	
	-- Adhibir a o grau a especialización
	local grauEspecializacion
	if grau and especializacion then
		grauEspecializacion = grau .. ' en ' .. especializacion
	else
		grauEspecializacion = grau or especializacion
	end
	
	local periodo            = formatoPeriodoWikidata(calificativos, opcions)
    
    -- Casos
    --
    
    if grauEspecializacion and periodo then
    	return puestoEducacion .. '&nbsp;<small>(' .. grauEspecializacion .. '; ' .. periodo .. ')</small>'
    elseif grauEspecializacion then
    	return puestoEducacion .. '&nbsp;<small>(' .. grauEspecializacion .. ')</small>'
    elseif periodo then
    	return puestoEducacion .. '&nbsp;<small>(' .. periodo .. ')</small>'
    else
    	return puestoEducacion
    end
    --if true then return require('Módulo:Tablas').tostring(calificativos) end -- Pruebas
end

-- Alias pa simplificar l'uso dende a plantilla propiedat
--
p['educau en'] 		= p.formatoEducauEn

return p