Módulo:Ficha de licencia de software
Revisión del 07:57 25 abr 2023 de Pyc1948 (discusión | contribs.) (Página creada con «local p = {} local ModuloArgumentos = require('Módulo:Argumentos') local ModuloFicha = require('Módulo:Ficha') local ModuloWikidata = require('Module:Wikidata') local ModuloPaginas = require('Módulo:Páginas') local elementoTabla = require('Módulo:Tablas').elemento local argumentos local Entidad function p.Ficha(frame) argumentos = ModuloArgumentos.obtenerArgumentosConValor(frame) Entidad = mw.wikibase.getEntity(argumentos.id) or {} local Titulo =…»)
Uso
local p = {} local ModuloArgumentos = require('Módulo:Argumentos') local ModuloFicha = require('Módulo:Ficha') local ModuloWikidata = require('Module:Wikidata') local ModuloPaginas = require('Módulo:Páginas') local elementoTabla = require('Módulo:Tablas').elemento local argumentos local Entidad function p.Ficha(frame) argumentos = ModuloArgumentos.obtenerArgumentosConValor(frame) Entidad = mw.wikibase.getEntity(argumentos.id) or {} local Titulo = argumentos['título'] or obtenerEtiquetaWikidata() or ModuloPaginas.nombrePagina({desambiguar='sí'}) -- Propiedades local Imagen = argumentos['imagen'] local Pie if Imagen then Pie = argumentos['pie de foto'] else Imagen, Pie = obtenerImagenWikidata() end local Tamano = argumentos['tamaño'] or "250px" local Autor = argumentos['autor'] or propiedad('P50', {['enlace']='sí', ['linkback']='sí'}) or "" local Version = argumentos['version'] or propiedad('P348', {['linkback']='sí'}) or "" local Editorial = argumentos['publicado'] or propiedad('P123', {['linkback']='sí'}) or "" local Fecha = argumentos['fecha'] or propiedad('P577', {['linkback']='sí'}) or "" local AprobadoDebian local AprobadoFSF local SoftwareLibre local AprobadoOSI local Copyleft if argumentos['aprobado Debian'] then AprobadoDebian = argumentos['aprobado Debian'] elseif esUnValor(Entidad,'P790','Q903054') then AprobadoDebian = frame:preprocess('{{sí}}') else AprobadoDebian = "" end if argumentos['aprobado FSF'] then AprobadoFSF = argumentos['aprobado FSF'] elseif esUnValor(Entidad,'P790','Q48413') then AprobadoFSF = frame:preprocess('{{sí}}') else AprobadoFSF = "" end if argumentos['software libre'] then SoftwareLibre = argumentos['software libre'] elseif esUnValor(Entidad,'P31','Q3943414') or esUnValor(Entidad,'P31','Q1437937') or esUnValor(Entidad,'P31','Q5975031') then SoftwareLibre = frame:preprocess('{{sí}}') else SoftwareLibre = "" end if argumentos['código abierto'] then AprobadoOSI = argumentos['código abierto'] elseif esUnValor(Entidad,'P790','Q845918') then AprobadoOSI = frame:preprocess('{{sí}}') else AprobadoOSI = "" end local CompatibleGPL = argumentos['compatible GPL'] or "" -- Pendiente proponer propiedad "compatible con" if argumentos['copyleft'] then Copyleft = argumentos['copyleft'] elseif esUnValor(Entidad,'P31','Q5975031') then Copyleft = frame:preprocess('{{sí}}') else Copyleft = "" end local UsoOtrasLicencias = argumentos['compatible GNU'] or "" -- Pendiente proponer propiedad "compatible con" local SitioWeb = argumentos['sitio web'] or propiedad('P856', {['linkback']='sí'}) or "" local TablaFicha = { entidad = argumentos.id, titulo = capitalizar(Titulo), clasetitulo = 'informática', estilotitulo = 'background-color: #ccccff; color:#000;', estiloseccion = 'background-color: #ccccff; color:#000;', estiloetiqueta = 'background-color: #ddddff; width:35%', estilodatos = 'width:65%', imagen = Imagen, ['tamañoimagen'] = Tamano, pie = Pie, estilopie = 'font-size:88%', {tipo='sección', titulo = "Información", {'Autor', Autor}, {'[[Versión de software|Versión]]', Version}, {'Edición', Editorial}, {'Fecha', Fecha}, {'Compatible con [[Directrices de software libre de Debian|DFSG]]', AprobadoDebian}, {'Aprobado por la [[Free Software Foundation|FSF]]', AprobadoFSF}, {'[[Software libre]]', SoftwareLibre}, {'Aprobado por la [[Open Source Initiative|OSI]]', AprobadoOSI}, {'Compatible con la [[GNU General Public License|GPL]]', CompatibleGPL}, {'[[Copyleft]]', Copyleft}, {'Utilizable junto con otras licencias', UsoOtrasLicencias}, {'Sitio web', SitioWeb}, } } return ModuloFicha.infobox(TablaFicha) end function obtenerEtiquetaWikidata() if Entidad and Entidad.labels and Entidad.labels.es then return Entidad.labels.es.value end end function obtenerImagenWikidata() local imagen, valorImagen, piesDeImagen, k, pieDeImagen if not Entidad then return end -- Obtener la primera imagen en Wikidata de la persona local imagen = elementoTabla(Entidad, 'claims','P154',1) if not imagen then return end valorImagen = elementoTabla(imagen, 'mainsnak','datavalue','value') piesDeImagen = elementoTabla(imagen, 'qualifiers','P2096') -- Encontrar el pie en español if piesDeImagen then for k,pieDeImagen in pairs(piesDeImagen) do if pieDeImagen.datavalue.value.language == 'es' then return valorImagen, pieDeImagen.datavalue.value.text end end end -- Si no hay pie de imagen en español comprueba si hay fecha especificada para la imagen piesDeImagen = elementoTabla(imagen, 'qualifiers', 'P585') if piesDeImagen and piesDeImagen[1] then return valorImagen, nombre .. ' en ' .. require('Módulo:Wikidata/Fecha').FormateaFechaHora(piesDeImagen[1].datavalue.value, {['formatoFecha']='año',['enlace']='no'}) end -- Sin pie de imagen en español return valorImagen end function propiedad(idPropiedad,opciones) if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then if not opciones then opciones = {['linkback']='sí'} end opciones.entityId = Entidad.id opciones.propiedad = idPropiedad valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad]) return valorPropiedad end end function esUnValor(entidad, idPropiedad, idaBuscar) if not entidad or not idPropiedad then return end local declaracion = elementoTabla(entidad, 'claims', idPropiedad) local idBuscado if not declaracion then return false end for k,v in pairs(declaracion) do idBuscado = elementoTabla(v,'mainsnak','datavalue','value','id') if idBuscado == idaBuscar then return true end end return false end function capitalizar(cad) return string.upper(string.sub(cad,1,1)) .. string.sub(cad,2) end return p