<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://netxipedia.org/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AFicha_de_software</id>
	<title>Módulo:Ficha de software - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://netxipedia.org/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AFicha_de_software"/>
	<link rel="alternate" type="text/html" href="https://netxipedia.org/index.php?title=M%C3%B3dulo:Ficha_de_software&amp;action=history"/>
	<updated>2026-07-21T22:02:45Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://netxipedia.org/index.php?title=M%C3%B3dulo:Ficha_de_software&amp;diff=2566&amp;oldid=prev</id>
		<title>Netxipedia: 1 revisión importada</title>
		<link rel="alternate" type="text/html" href="https://netxipedia.org/index.php?title=M%C3%B3dulo:Ficha_de_software&amp;diff=2566&amp;oldid=prev"/>
		<updated>2025-08-26T18:36:59Z</updated>

		<summary type="html">&lt;p&gt;1 revisión importada&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisión del 18:36 26 ago 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;es&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Sin diferencias)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Netxipedia</name></author>
	</entry>
	<entry>
		<id>https://netxipedia.org/index.php?title=M%C3%B3dulo:Ficha_de_software&amp;diff=2565&amp;oldid=prev</id>
		<title>netxipedia&gt;Nacaru: Permito la posibilidad de añadir clase skin-invert-image a imágenes de ficha cuyos colores necesitan ser invertidos en modo oscuro</title>
		<link rel="alternate" type="text/html" href="https://netxipedia.org/index.php?title=M%C3%B3dulo:Ficha_de_software&amp;diff=2565&amp;oldid=prev"/>
		<updated>2025-07-09T17:29:14Z</updated>

		<summary type="html">&lt;p&gt;Permito la posibilidad de añadir clase skin-invert-image a imágenes de ficha cuyos colores necesitan ser invertidos en modo oscuro&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local ModuloArgumentos	= require(&amp;#039;Módulo:Argumentos&amp;#039;)&lt;br /&gt;
local ModuloFicha		= require(&amp;#039;Módulo:Ficha&amp;#039;)&lt;br /&gt;
local ModuloWikidata	= require(&amp;#039;Módulo:Wikidata&amp;#039;)&lt;br /&gt;
local ModuloPaginas		= require(&amp;#039;Módulo:Páginas&amp;#039;)&lt;br /&gt;
local elementoTabla		= require(&amp;#039;Módulo:Tablas&amp;#039;).elemento&lt;br /&gt;
local esUnValor			= ModuloWikidata.esUnValor&lt;br /&gt;
local idEntidad, InstanciaDe&lt;br /&gt;
&lt;br /&gt;
-- :: Estilos&lt;br /&gt;
local ColorTitulo		= &amp;#039;#DCEAEC&amp;#039;&lt;br /&gt;
local ColorTituloTexto	= &amp;#039;#000&amp;#039;&lt;br /&gt;
local ColorEtiqueta		= &amp;#039;#eef5f6&amp;#039;&lt;br /&gt;
local EstiloTitulo&lt;br /&gt;
local EstiloSeccion		&lt;br /&gt;
local EstiloEtiqueta	= &amp;#039;width:35%&amp;#039;&lt;br /&gt;
local EstiloDatos		= &amp;#039;width:65%&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local Clasificacion		= mw.loadData(&amp;#039;Módulo:Ficha de software/datos&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p.Ficha(frame)&lt;br /&gt;
	-- :: Inicializador&lt;br /&gt;
	ModuloWikidata:setFrame(frame)&lt;br /&gt;
	ModuloArgumentos.obtenerTablaDeArgumentos(frame)&lt;br /&gt;
	argumentos		= obtenerValorDeArgumentos&lt;br /&gt;
	idEntidad		= argumentos{&amp;#039;id&amp;#039;} or argumentos{&amp;#039;entidad&amp;#039;} or mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
&lt;br /&gt;
	InstanciaDe		= propiedad(&amp;#039;P31&amp;#039;, {[&amp;#039;formato&amp;#039;] = &amp;#039;entidadID&amp;#039;})&lt;br /&gt;
&lt;br /&gt;
	-- :: Datos básicos&lt;br /&gt;
	Titulo			= argumentos{&amp;#039;name&amp;#039;, &amp;#039;nombre&amp;#039;} or mw.wikibase.label(idEntidad) or ModuloPaginas.nombrePagina({desambiguar=&amp;#039;sí&amp;#039;})&lt;br /&gt;
	local ParteDe	= argumentos{&amp;#039;familia&amp;#039;, &amp;#039;family&amp;#039;, {propiedad, &amp;#039;P279&amp;#039;, {[&amp;#039;linkback&amp;#039;] = &amp;#039;no&amp;#039;}}, {propiedad, &amp;#039;P179&amp;#039;, {[&amp;#039;linkback&amp;#039;] = &amp;#039;no&amp;#039;}}, {propiedad, &amp;#039;P361&amp;#039;, {[&amp;#039;linkback&amp;#039;] = &amp;#039;no&amp;#039;}}}&lt;br /&gt;
	local Familia&lt;br /&gt;
	if ParteDe then&lt;br /&gt;
		if Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;componenteOS&amp;#039; then&lt;br /&gt;
			Familia = &amp;quot;&amp;#039;&amp;#039;Componente de &amp;quot; .. ParteDe .. &amp;quot;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
		elseif Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;OS&amp;#039; then&lt;br /&gt;
			Familia = &amp;quot;&amp;#039;&amp;#039;Parte de la familia &amp;quot; .. ParteDe .. &amp;quot;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			Familia = &amp;quot;&amp;#039;&amp;#039;Parte de &amp;quot; .. ParteDe .. &amp;quot;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- :: Propiedades&lt;br /&gt;
	local Captura		= argumentos{&amp;#039;captura&amp;#039;}&lt;br /&gt;
	local Pie&lt;br /&gt;
	if Captura then&lt;br /&gt;
		Pie				= argumentos{&amp;#039;pie&amp;#039;}&lt;br /&gt;
	else&lt;br /&gt;
		Captura, Pie	= imagenWikidata(&amp;#039;P18&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local Tamano		= argumentos{&amp;#039;tamaño&amp;#039;} or &amp;#039;250px&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	local Logo			= argumentos{&amp;#039;logo&amp;#039;} or imagenWikidata(&amp;#039;P154&amp;#039;) or &amp;#039;&amp;#039;&lt;br /&gt;
	local ImagenModoOscuro = argumentos{&amp;#039;imagen modo oscuro&amp;#039;, &amp;#039;imagen_modo_oscuro&amp;#039;, &amp;#039;imagenmodooscuro&amp;#039;}&lt;br /&gt;
	local TamanoLogo	= argumentos{&amp;#039;tamaño_logo&amp;#039;} or &amp;#039;250px&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- :: Datos generales&lt;br /&gt;
	local Alias				= argumentos{&amp;#039;alias&amp;#039;, {propiedad, &amp;#039;P2561&amp;#039;,{[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}}&lt;br /&gt;
	local NombreTecnico		= argumentos{&amp;#039;nombre_técnico&amp;#039;, {propiedad, &amp;#039;P1845&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;, [&amp;#039;calificativo&amp;#039;] = &amp;#039;P50&amp;#039;}}} or &amp;#039;&amp;#039;&lt;br /&gt;
	if string.len(NombreTecnico) &amp;gt; 200 then&lt;br /&gt;
		NombreTecnico	= seccionDesplegable(frame, &amp;#039;varios&amp;#039;, NombreTecnico)&lt;br /&gt;
	end&lt;br /&gt;
	local NombreCodigo		= argumentos{&amp;#039;nombre_código&amp;#039;, {propiedad, &amp;#039;P1638&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}}&lt;br /&gt;
	&lt;br /&gt;
	local Genero&lt;br /&gt;
	if Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;OS&amp;#039; or Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;componenteOS&amp;#039; then&lt;br /&gt;
		Genero				= argumentos{&amp;#039;género&amp;#039;, {propiedad, &amp;#039;P366&amp;#039;, {[&amp;#039;uno&amp;#039;] = &amp;#039;sí&amp;#039;}}}&lt;br /&gt;
	else&lt;br /&gt;
		Genero				= argumentos{&amp;#039;género&amp;#039;, {propiedad, &amp;#039;P31&amp;#039;, {[&amp;#039;uno&amp;#039;] = &amp;#039;sí&amp;#039;}}}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local Licencia	= argumentos{&amp;#039;licencia&amp;#039;, {propiedad, &amp;#039;P275&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}} or &amp;#039;&amp;#039;&lt;br /&gt;
	if string.len(Licencia) &amp;gt; 200 then&lt;br /&gt;
		Licencia	= seccionDesplegable(frame, &amp;#039;[[Licencia dual|varias]]&amp;#039;, Licencia)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ModeloDesarrollo	= argumentos{&amp;#039;modelo_desarrollo&amp;#039;, {obtenerModeloDesarrollo}}&lt;br /&gt;
&lt;br /&gt;
	local Desarrollador		= argumentos{&amp;#039;desarrollador&amp;#039;, {propiedad, &amp;#039;P178&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}}&lt;br /&gt;
	local Autor				= argumentos{&amp;#039;autor&amp;#039;, {propiedad, &amp;#039;P170&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}}&lt;br /&gt;
	&lt;br /&gt;
	local EstadoActual		= argumentos{&amp;#039;estado_actual&amp;#039;, &amp;#039;estado&amp;#039;, &amp;#039;working_state&amp;#039;}&lt;br /&gt;
	&lt;br /&gt;
	local Discontinuacion	= argumentos{&amp;#039;discontinuación&amp;#039;, &amp;#039;descontinuación&amp;#039;, {propiedad, &amp;#039;P2669&amp;#039;, {[&amp;#039;linkback&amp;#039;] = &amp;#039;no&amp;#039;, [&amp;#039;enlace&amp;#039;]=&amp;#039;no&amp;#039;}}}&lt;br /&gt;
&lt;br /&gt;
	-- :: Malware y vulnerabilidades&lt;br /&gt;
	local CVE	   			= argumentos{&amp;#039;identificador_cve&amp;#039;, &amp;#039;cve&amp;#039;, &amp;#039;vulnerabilidades&amp;#039;, {propiedad, &amp;#039;P3587&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}} or &amp;#039;&amp;#039;&lt;br /&gt;
	if string.len(CVE) &amp;gt; 200 then&lt;br /&gt;
		CVE					= seccionDesplegable(frame, &amp;#039;varias&amp;#039;, CVE)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local CVETitulo			= &amp;#039;[[Inseguridad informática|Vulnerabilidades]]&amp;#039;&lt;br /&gt;
		if Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;malware&amp;#039; then CVETitulo = &amp;#039;[[CVE|Identificador CVE]]&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
	local Descubrimiento	= argumentos{&amp;#039;descubrimiento&amp;#039;, {propiedad, &amp;#039;P575&amp;#039;, {[&amp;#039;uno&amp;#039;] = &amp;#039;sí&amp;#039;, [&amp;#039;enlace&amp;#039;] = &amp;#039;no&amp;#039;}}}&lt;br /&gt;
	local Parchado			= argumentos{&amp;#039;parchado&amp;#039;, {propiedad, &amp;#039;P582&amp;#039;, {[&amp;#039;uno&amp;#039;] = &amp;#039;sí&amp;#039;, [&amp;#039;enlace&amp;#039;] = &amp;#039;no&amp;#039;}}}&lt;br /&gt;
	local Descubridor		= argumentos{&amp;#039;descubridor&amp;#039;, {propiedad, &amp;#039;P61&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}}&lt;br /&gt;
	local SoftwareAfectado	= argumentos{&amp;#039;software_afectado&amp;#039;, {propiedad, &amp;#039;P1547&amp;#039;,{[&amp;#039;calificador&amp;#039;]=&amp;#039;P348&amp;#039;, [&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}}&lt;br /&gt;
	local Precio			= argumentos{&amp;#039;precio&amp;#039;, {propiedad, &amp;#039;P1547&amp;#039;,{[&amp;#039;formato&amp;#039;]=&amp;#039;unidad&amp;#039;}}}&lt;br /&gt;
	&lt;br /&gt;
	local PrecioTitulo		= &amp;#039;Precio de venta&amp;#039;&lt;br /&gt;
		if Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;malware&amp;#039; then PrecioTitulo = &amp;#039;Precio de rescate&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
	-- :: Datos técnicos&lt;br /&gt;
	local LenguajeProgramacion	= argumentos{&amp;#039;lenguaje_programación&amp;#039;, {propiedad, &amp;#039;P277&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}}&lt;br /&gt;
&lt;br /&gt;
	local SistemaOperativo&lt;br /&gt;
	if not Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;OS&amp;#039; then&lt;br /&gt;
		SistemaOperativo		= argumentos{&amp;#039;sistema_operativo&amp;#039;, &amp;#039;sistemas_operativos&amp;#039;, {propiedad, &amp;#039;P306&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}} or &amp;#039;&amp;#039;&lt;br /&gt;
		if string.len(SistemaOperativo) &amp;gt; 200 then&lt;br /&gt;
			SistemaOperativo		= seccionDesplegable(frame, &amp;#039;[[multiplataforma]]&amp;#039;, SistemaOperativo)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local Plataforma			= argumentos{&amp;#039;plataforma&amp;#039;, {propiedad, &amp;#039;P400&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}}&lt;br /&gt;
	local TamanoArchivo			= argumentos{&amp;#039;tamaño_archivo&amp;#039;, {propiedad, &amp;#039;P3575&amp;#039;, {[&amp;#039;uno&amp;#039;] = &amp;#039;sí&amp;#039;}}}&lt;br /&gt;
	local Nucleo				= argumentos{&amp;#039;núcleo&amp;#039;, &amp;#039;kernel&amp;#039;} or Clasificacion[&amp;#039;Nucleos&amp;#039;][ParteDe] or Clasificacion[&amp;#039;Nucleos&amp;#039;][InstanciaDe]&lt;br /&gt;
	local TipoNucleo			= argumentos{&amp;#039;núcleo_tipo&amp;#039;, &amp;#039;kernel_tipo&amp;#039;}&lt;br /&gt;
	local GUI					= argumentos{&amp;#039;ui&amp;#039;, {propiedad, &amp;#039;P1414&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}}&lt;br /&gt;
&lt;br /&gt;
	-- :: Datos de actualización&lt;br /&gt;
	local AdminPaquetes			= argumentos{&amp;#039;administrador_paquetes&amp;#039;, {propiedad, &amp;#039;P3033&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}}&lt;br /&gt;
	local MetodoActualizacion	= argumentos{&amp;#039;método_actualización&amp;#039;, &amp;#039;modelo_actualización&amp;#039;, {propiedad, &amp;#039;P4387&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}}&lt;br /&gt;
&lt;br /&gt;
	-- :: Idiomas&lt;br /&gt;
	local Idiomas				= argumentos{&amp;#039;idiomas&amp;#039;, {propiedad, &amp;#039;P407&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}} or &amp;#039;&amp;#039;&lt;br /&gt;
	if string.len(Idiomas) &amp;gt; 200 then&lt;br /&gt;
		Idiomas		= seccionDesplegable(frame,&amp;#039;[[multilingüe]]&amp;#039;, Idiomas)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local Espanol&lt;br /&gt;
	if not Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;malware&amp;#039; then&lt;br /&gt;
		Espanol			= argumentos{&amp;#039;español&amp;#039;, &amp;#039;castellano&amp;#039;, {esUnValor, fakeEntidad(idEntidad, &amp;#039;P407&amp;#039;), &amp;#039;P407&amp;#039;, &amp;#039;Q1321&amp;#039;}}&lt;br /&gt;
		if Espanol then&lt;br /&gt;
			if Espanol == &amp;#039;No&amp;#039; or Espanol == &amp;#039;no&amp;#039; then&lt;br /&gt;
				Espanol		= &amp;#039;No&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				Espanol		= &amp;#039;Sí&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- :: Otros datos&lt;br /&gt;
	local Estandares			= argumentos{&amp;#039;estándares&amp;#039;}&lt;br /&gt;
	local Motores				= argumentos{&amp;#039;motores&amp;#039;, {propiedad, &amp;#039;P408&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;}}}&lt;br /&gt;
	local Dependencias&lt;br /&gt;
	if not Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;malware&amp;#039; then&lt;br /&gt;
		Dependencias			= argumentos{&amp;#039;dependencias&amp;#039;, {propiedad, &amp;#039;P1547&amp;#039;,{[&amp;#039;calificador&amp;#039;]=&amp;#039;P348&amp;#039;}}}&lt;br /&gt;
		if Dependencias then&lt;br /&gt;
			Dependencias		= seccionDesplegable(frame, &amp;#039;dependencias&amp;#039;, Dependencias)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ArchivosLegibles		= argumentos{&amp;#039;formatos_legibles&amp;#039;, {propiedad, &amp;#039;P1072&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;, [&amp;#039;linkback&amp;#039;] = &amp;#039;no&amp;#039;}}} or &amp;#039;&amp;#039;&lt;br /&gt;
	if string.len(ArchivosLegibles) &amp;gt; 300 then&lt;br /&gt;
		ArchivosLegibles	= seccionDesplegable(frame, &amp;#039;varios&amp;#039;, ArchivosLegibles)&lt;br /&gt;
	end&lt;br /&gt;
	local ArchivosEditables	= argumentos{&amp;#039;formatos_editables&amp;#039;, {propiedad, &amp;#039;P1073&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;, [&amp;#039;linkback&amp;#039;] = &amp;#039;no&amp;#039;}}} or &amp;#039;&amp;#039;&lt;br /&gt;
	if string.len(ArchivosEditables) &amp;gt; 300 then&lt;br /&gt;
		ArchivosEditables	= seccionDesplegable(frame, &amp;#039;varios&amp;#039;, ArchivosEditables)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- :: Asistencia técnica&lt;br /&gt;
	local AsistenciaTecnica&lt;br /&gt;
	local Soporte			= argumentos{&amp;#039;soporte&amp;#039;}&lt;br /&gt;
	local InicioSoporte		= argumentos{&amp;#039;inicio_soporte&amp;#039;}&lt;br /&gt;
	local FinSoporte		= argumentos{&amp;#039;fin_soporte&amp;#039;}&lt;br /&gt;
	local InicioSoporteExt	= argumentos{&amp;#039;inicio_soporte_extendido&amp;#039;}&lt;br /&gt;
	local FinSoporteExt		= argumentos{&amp;#039;fin_soporte_extendido&amp;#039;}&lt;br /&gt;
	if (not InicioSoporte and not FinSoporte and not InicioSoporteExt and not FinSoporteExt) and Soporte then&lt;br /&gt;
		if Soporte then&lt;br /&gt;
			AsistenciaTecnica	= &amp;#039;&amp;lt;span style=&amp;quot;font-size:smaller&amp;quot;&amp;gt;&amp;#039; .. Soporte .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- :: Cronología y versiones&lt;br /&gt;
	-- Lanzamiento inicial&lt;br /&gt;
	local LanzamientoInicial	= argumentos{&amp;#039;lanzamiento&amp;#039;}&lt;br /&gt;
	local LanzamientoInicialRef&lt;br /&gt;
	local LanzamientoInicialFecha&lt;br /&gt;
	local LanzamientoInicialWeb&lt;br /&gt;
	local LanzamientoInicialDominio&lt;br /&gt;
	local LanzamientoInicialAcceso&lt;br /&gt;
	if not LanzamientoInicial then&lt;br /&gt;
		LanzamientoInicialRef		= {}&lt;br /&gt;
		LanzamientoInicial		= propiedad(&amp;#039;P571&amp;#039;, {[&amp;#039;linkback&amp;#039;] = &amp;#039;no&amp;#039;, [&amp;#039;uno&amp;#039;] = &amp;#039;sí&amp;#039;, [&amp;#039;enlace&amp;#039;]=&amp;#039;no&amp;#039;})&lt;br /&gt;
		LanzamientoInicialWeb		= argumentos{&amp;#039;web lanzamiento&amp;#039;, &amp;#039;web_lanzamiento&amp;#039;}&lt;br /&gt;
		if LanzamientoInicialWeb then LanzamientoInicialDominio	= LanzamientoInicialWeb:match(&amp;#039;^%w+://([^/]+)&amp;#039;) end&lt;br /&gt;
		LanzamientoInicialAcceso	= argumentos{&amp;#039;fecha acceso web lanzamiento&amp;#039;, &amp;#039;fecha_acceso_web_lanzamiento&amp;#039;}&lt;br /&gt;
&lt;br /&gt;
		if LanzamientoInicialFecha	then&lt;br /&gt;
			LanzamientoInicial = LanzamientoInicial .. &amp;#039;&amp;lt;small&amp;gt;(&amp;#039; .. LanzamientoInicialFecha .. &amp;#039;)&amp;lt;/small&amp;gt;&amp;#039;&lt;br /&gt;
			LanzamientoInicialRef[&amp;#039;fecha&amp;#039;] = LanzamientoInicial&lt;br /&gt;
			if LanzamientoInicialWeb		then LanzamientoInicialRef[&amp;#039;url&amp;#039;]		= LanzamientoInicialWeb end&lt;br /&gt;
			if LanzamientoInicialDominio	then LanzamientoInicialRef[&amp;#039;sitioweb&amp;#039;]	= LanzamientoInicialDominio end&lt;br /&gt;
			if LanzamientoInicialAcceso		then LanzamientoInicialRef[&amp;#039;fechaacceso&amp;#039;] = LanzamientoInicialAcceso end&lt;br /&gt;
			if next(LanzamientoInicialRef)	then &lt;br /&gt;
				LanzamientoInicialRef[&amp;#039;título&amp;#039;] = &amp;#039;Web lanzamiento inicial&amp;#039;&lt;br /&gt;
				LanzamientoInicial = LanzamientoInicial .. citar(frame, LanzamientoInicialRef)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local Versiones					= obtenerVersiones(frame) or {}&lt;br /&gt;
	local VersionesHistorial		= argumentos{&amp;#039;versiones&amp;#039;} -- or Versiones[&amp;#039;lista&amp;#039;]&lt;br /&gt;
	local UltimaVersionEstable		= argumentos{&amp;#039;última_versión&amp;#039;} or Versiones[&amp;#039;estable&amp;#039;]&lt;br /&gt;
	local UltimaVersionBeta			= argumentos{&amp;#039;última_versión_prueba&amp;#039;} or Versiones[&amp;#039;beta&amp;#039;]&lt;br /&gt;
	&lt;br /&gt;
	if argumentos{&amp;#039;última_versión&amp;#039;} then&lt;br /&gt;
		local webParam = argumentos{&amp;#039;web_ultima_version&amp;#039;} or argumentos{&amp;#039;web_última_versión&amp;#039;}&lt;br /&gt;
		local fechaParam = argumentos{&amp;#039;fecha_ultima_version&amp;#039;} or argumentos{&amp;#039;fecha_última_versión&amp;#039;}&lt;br /&gt;
		&lt;br /&gt;
		local web = (webParam and webParam ~= &amp;#039;&amp;#039; or false) and &amp;quot; ([&amp;quot;..webParam..&amp;quot; info])&amp;quot; or &amp;#039;&amp;#039;&lt;br /&gt;
		local fecha = (fechaParam and fechaParam ~= &amp;#039;&amp;#039; or false) and (&amp;#039;&amp;#039;..fechaParam) or &amp;#039;&amp;#039;&lt;br /&gt;
		&lt;br /&gt;
		UltimaVersionEstable = argumentos{&amp;#039;última_versión&amp;#039;} .. web .. &amp;#039; &amp;lt;small&amp;gt;(&amp;#039; .. fecha .. &amp;#039;)&amp;lt;/small&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if argumentos{&amp;#039;última_versión_prueba&amp;#039;} then&lt;br /&gt;
		local webParam = argumentos{&amp;#039;web_ultima_version_prueba&amp;#039;} or argumentos{&amp;#039;web_última_versión_prueba&amp;#039;}&lt;br /&gt;
		local fechaParam = argumentos{&amp;#039;fecha_ultima_version_prueba&amp;#039;} or argumentos{&amp;#039;fecha_última_versión_prueba&amp;#039;}&lt;br /&gt;
		&lt;br /&gt;
		local web = (webParam and webParam ~= &amp;#039;&amp;#039; or false) and &amp;quot; ([&amp;quot;..webParam..&amp;quot; info])&amp;quot; or &amp;#039;&amp;#039;&lt;br /&gt;
		local fecha = (fechaParam and fechaParam ~= &amp;#039;&amp;#039; or false) and (&amp;#039;&amp;#039;..fechaParam) or &amp;#039;&amp;#039;&lt;br /&gt;
		&lt;br /&gt;
		UltimaVersionBeta = argumentos{&amp;#039;última_versión_prueba&amp;#039;} .. web .. &amp;#039; &amp;lt;small&amp;gt;(&amp;#039; .. fecha .. &amp;#039;)&amp;lt;/small&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Cronología&lt;br /&gt;
	local PrecedidoPor			= argumentos{&amp;#039;predecesor&amp;#039;, {propiedad, &amp;#039;P155&amp;#039;, {[&amp;#039;linkback&amp;#039;] = &amp;#039;no&amp;#039;}}, {propiedad, &amp;#039;P1365&amp;#039;, {[&amp;#039;linkback&amp;#039;] = &amp;#039;no&amp;#039;}}}&lt;br /&gt;
	local SucedidoPor			= argumentos{&amp;#039;sucesor&amp;#039;, {propiedad, &amp;#039;P156&amp;#039;, {[&amp;#039;linkback&amp;#039;] = &amp;#039;no&amp;#039;}}, {propiedad, &amp;#039;P1366&amp;#039;, {[&amp;#039;linkback&amp;#039;] = &amp;#039;no&amp;#039;}}}&lt;br /&gt;
	local CronologiaTitulo		= argumentos{&amp;#039;cronología&amp;#039;}&lt;br /&gt;
	--local CronologiaActual		= Titulo&lt;br /&gt;
	if PrecedidoPor or SucedidoPor then&lt;br /&gt;
		if not CronologiaTitulo then&lt;br /&gt;
			if ParteDe then&lt;br /&gt;
				CronologiaTitulo= &amp;#039;Serie &amp;#039; .. ParteDe&lt;br /&gt;
			else&lt;br /&gt;
				CronologiaTitulo=  &amp;#039;Lanzamientos&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- :: Otras secciones&lt;br /&gt;
	local OtrosArticulos	= argumentos{&amp;#039;otros_artículos&amp;#039;, {propiedad, &amp;#039;P1659&amp;#039;, {[&amp;#039;lista&amp;#039;] = &amp;#039;nobullet&amp;#039;, [&amp;#039;linkback&amp;#039;] = &amp;#039;no&amp;#039;}}}&lt;br /&gt;
	local SitiosWeb			= p.obtenerEnlaces()&lt;br /&gt;
	local ClaseTitulo		= &amp;#039;software&amp;#039;&lt;br /&gt;
		if Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;malware&amp;#039; then ClaseTitulo = &amp;#039;virus&amp;#039; end&lt;br /&gt;
		if Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;componenteOS&amp;#039; then ClaseTitulo = &amp;#039;ingeniería&amp;#039; end&lt;br /&gt;
		if Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;OS&amp;#039; then ClaseTitulo = &amp;#039;pc&amp;#039; end&lt;br /&gt;
		if Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;web&amp;#039; then ClaseTitulo = &amp;#039;internet&amp;#039; end&lt;br /&gt;
	&lt;br /&gt;
	local GeneroTitulo		= &amp;#039;Tipo de programa&amp;#039;&lt;br /&gt;
		if Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;malware&amp;#039; then GeneroTitulo = &amp;#039;Clasificación&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
	local PlataformaTitulo	= &amp;#039;[[Plataforma (informática)|Plataformas admitidas]]&amp;#039;&lt;br /&gt;
		if Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;malware&amp;#039; then PlataformaTitulo = &amp;#039;Hardware afectado&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
	-- :: Estilos&lt;br /&gt;
	EstiloTitulo			= &amp;#039;;background-color:&amp;#039; .. ColorTitulo&lt;br /&gt;
	EstiloSeccion			= &amp;#039;background-color:&amp;#039; .. ColorTitulo&lt;br /&gt;
	EstiloEtiqueta			= EstiloEtiqueta .. &amp;#039;;background-color:&amp;#039; .. ColorEtiqueta&lt;br /&gt;
	--EstiloDatos				= EstiloEtiqueta--&lt;br /&gt;
&lt;br /&gt;
	-- :: La ficha&lt;br /&gt;
	local TablaFicha = {&lt;br /&gt;
		titulo  			= Titulo,&lt;br /&gt;
		subtitulo			= Familia,&lt;br /&gt;
		clasetitulo			= ClaseTitulo,&lt;br /&gt;
		estilotitulo		= EstiloTitulo,&lt;br /&gt;
		estiloseccion		= EstiloSeccion,&lt;br /&gt;
		estiloetiqueta		= EstiloEtiqueta,&lt;br /&gt;
		estilodatos			= EstiloDatos,&lt;br /&gt;
		imagen				= Logo,&lt;br /&gt;
		imagenmodooscuro    = ImagenModoOscuro,&lt;br /&gt;
		[&amp;#039;tamañoimagen&amp;#039;]	= TamanoLogo,&lt;br /&gt;
		--estiloimagen		= &amp;#039;max-height:150px&amp;#039;,&lt;br /&gt;
		imagen2				= Captura,&lt;br /&gt;
		[&amp;#039;tamañoimagen2&amp;#039;]	= Tamano,&lt;br /&gt;
		pie2				= Pie,&lt;br /&gt;
		estilopie2			= &amp;#039;font-size:88%&amp;#039;,&lt;br /&gt;
		{tipo=&amp;#039;sección&amp;#039;,&lt;br /&gt;
			titulo = &amp;#039;Información general&amp;#039;,&lt;br /&gt;
			{&amp;#039;[[Anexo:Géneros de software|&amp;#039;.. GeneroTitulo .. &amp;#039;]]&amp;#039;, Genero},&lt;br /&gt;
			{&amp;#039;Alias&amp;#039;, Alias},&lt;br /&gt;
			{&amp;#039;Nombre técnico&amp;#039;, NombreTecnico},&lt;br /&gt;
			{&amp;#039;Nombre código&amp;#039;, NombreCodigo},&lt;br /&gt;
			{&amp;#039;Autor&amp;#039;, Autor},&lt;br /&gt;
			{&amp;#039;[[Desarrollador de software|Desarrollador]]&amp;#039;, Desarrollador},&lt;br /&gt;
			{&amp;#039;[[Ingeniería de software|Modelo de desarrollo]]&amp;#039;, ModeloDesarrollo},&lt;br /&gt;
			{&amp;#039;Lanzamiento inicial&amp;#039;, LanzamientoInicial},&lt;br /&gt;
			{&amp;#039;Discontinuación&amp;#039;, Discontinuacion},&lt;br /&gt;
			{CVETitulo, CVE},&lt;br /&gt;
			{&amp;#039;Fecha de descubrimiento&amp;#039;, Descubrimiento},&lt;br /&gt;
			{&amp;#039;Fecha de parchado&amp;#039;, Parchado},&lt;br /&gt;
			{&amp;#039;Descubridor&amp;#039;, Descubridor},&lt;br /&gt;
			{&amp;#039;Software afectado&amp;#039;, SoftwareAfectado},&lt;br /&gt;
			{PrecioTitulo, Precio},&lt;br /&gt;
			{&amp;#039;[[Licencia de software|Licencia]]&amp;#039;, Licencia},&lt;br /&gt;
			{&amp;#039;Estado actual&amp;#039;, EstadoActual},&lt;br /&gt;
			{&amp;#039;[[Idioma]]s&amp;#039;, Idiomas},&lt;br /&gt;
			{&amp;#039;[[Idioma español|En español]]&amp;#039;, Espanol} -- Este parámetro no me gusta&lt;br /&gt;
		},&lt;br /&gt;
		{tipo=&amp;#039;sección&amp;#039;,&lt;br /&gt;
			titulo = &amp;#039;Información técnica&amp;#039;,&lt;br /&gt;
			{&amp;#039;[[Lenguaje de programación|Programado en]]&amp;#039;, LenguajeProgramacion},&lt;br /&gt;
			{&amp;#039;[[Sistema operativo]]&amp;#039;, SistemaOperativo},&lt;br /&gt;
			{&amp;#039;[[Núcleo (informática)|Núcleo]]&amp;#039;, Nucleo},&lt;br /&gt;
			{&amp;#039;Tipo de núcleo&amp;#039;, TipoNucleo},&lt;br /&gt;
			{&amp;#039;Tamaño&amp;#039;, TamanoArchivo},&lt;br /&gt;
			{PlataformaTitulo, Plataforma},&lt;br /&gt;
			{&amp;#039;[[Interfaz gráfica de usuario|Interfaz gráfica]] predeterminada&amp;#039;, GUI},&lt;br /&gt;
			{&amp;#039;[[Sistema de gestión de paquetes]]&amp;#039;, AdminPaquetes},&lt;br /&gt;
			{&amp;#039;[[Parche (informática)|Método de actualización]]&amp;#039;, MetodoActualizacion},&lt;br /&gt;
			{&amp;#039;[[Norma (tecnología)|Estándares]]&amp;#039;, Estandares},&lt;br /&gt;
			--{&amp;#039;[[Motor de software|Motor]]&amp;#039;, Motores},&lt;br /&gt;
			{&amp;#039;Motor&amp;#039;, Motores},&lt;br /&gt;
		},&lt;br /&gt;
		{tipo=&amp;#039;sección&amp;#039;,&lt;br /&gt;
			estilodatos	= &amp;#039;text-align:left&amp;#039;,&lt;br /&gt;
			titulo		= &amp;#039;Versiones&amp;#039;,&lt;br /&gt;
			{&amp;#039;[[Ciclo de vida del lanzamiento de software|Última versión estable]]&amp;#039;, UltimaVersionEstable},&lt;br /&gt;
			{&amp;#039;[[Ciclo de vida del lanzamiento de software|Última versión en pruebas]]&amp;#039;, UltimaVersionBeta},&lt;br /&gt;
			{&amp;#039;Historial de versiones&amp;#039;, VersionesHistorial},&lt;br /&gt;
		},&lt;br /&gt;
		{tipo = &amp;#039;sección&amp;#039;,&lt;br /&gt;
			titulo = CronologiaTitulo,&lt;br /&gt;
			{tipo=&amp;#039;sucesión&amp;#039;,&lt;br /&gt;
				anterior = PrecedidoPor or &amp;#039;&amp;#039;,&lt;br /&gt;
				actual = CronologiaActual or &amp;#039;&amp;#039;,&lt;br /&gt;
				siguiente = SucedidoPor or &amp;#039;&amp;#039;,&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		{tipo=&amp;#039;sección&amp;#039;,&lt;br /&gt;
			estilodatos	= &amp;#039;text-align:left&amp;#039;,&lt;br /&gt;
			titulo		= &amp;#039;Dependencias&amp;#039;,&lt;br /&gt;
			{&amp;#039;&amp;#039;, Dependencias}&lt;br /&gt;
		},&lt;br /&gt;
		{tipo=&amp;#039;sección&amp;#039;,&lt;br /&gt;
			estilodatos	= &amp;#039;text-align:left&amp;#039;,&lt;br /&gt;
			titulo		= &amp;#039;Archivos legibles&amp;#039;,&lt;br /&gt;
			{&amp;#039;&amp;#039;, ArchivosLegibles}&lt;br /&gt;
		},&lt;br /&gt;
		{tipo=&amp;#039;sección&amp;#039;,&lt;br /&gt;
			estilodatos	= &amp;#039;text-align:left&amp;#039;,&lt;br /&gt;
			titulo		= &amp;#039;Archivos editables&amp;#039;,&lt;br /&gt;
			{&amp;#039;&amp;#039;, ArchivosEditables}&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		{tipo=&amp;#039;sección&amp;#039;,&lt;br /&gt;
			titulo = &amp;#039;Asistencia técnica&amp;#039;,&lt;br /&gt;
			{&amp;#039;&amp;#039;, AsistenciaTecnica},&lt;br /&gt;
			{&amp;#039;Inicio soporte&amp;#039;, InicioSoporte},&lt;br /&gt;
			{&amp;#039;Fin soporte&amp;#039;, InicioSoporte},&lt;br /&gt;
			{&amp;#039;Inicio soporte extendido&amp;#039;, InicioSoporteExt},&lt;br /&gt;
			{&amp;#039;Fin soporte extendido&amp;#039;, InicioSoporteExt},&lt;br /&gt;
		},&lt;br /&gt;
		{tipo=&amp;#039;sección&amp;#039;,&lt;br /&gt;
			titulo = &amp;#039;Artículos relacionados&amp;#039;,&lt;br /&gt;
			estilodatos	= &amp;#039;text-align:left&amp;#039;,&lt;br /&gt;
			{&amp;#039;&amp;#039;, OtrosArticulos}&lt;br /&gt;
		},&lt;br /&gt;
		{tipo=&amp;#039;sección&amp;#039;,&lt;br /&gt;
			titulo = &amp;#039;Enlaces&amp;#039;,&lt;br /&gt;
			--estilodatos	= &amp;#039;text-align:left&amp;#039;,&lt;br /&gt;
			{&amp;#039;&amp;#039;, SitiosWeb}&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
	return ModuloFicha.infobox(TablaFicha)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- :: Función para obtener y formatear enlaces externos&lt;br /&gt;
function p.obtenerEnlaces()&lt;br /&gt;
	local SitiosWeb = {}&lt;br /&gt;
	&lt;br /&gt;
	local SitioWeb	= argumentos{&amp;#039;sitio_web&amp;#039;, &amp;#039;sitio web&amp;#039;, &amp;#039;web&amp;#039;, {propiedad, &amp;#039;P856&amp;#039;,{[&amp;#039;enlace&amp;#039;]=&amp;#039;no&amp;#039;, uno=&amp;#039;sí&amp;#039;}}}&lt;br /&gt;
	local Blog		= argumentos{&amp;#039;blog_oficial&amp;#039;, {propiedad, &amp;#039;P1581&amp;#039;,{[&amp;#039;enlace&amp;#039;]=&amp;#039;no&amp;#039;, uno=&amp;#039;sí&amp;#039;}}}&lt;br /&gt;
	local Repo		= argumentos{&amp;#039;repositorio&amp;#039;, {propiedad, &amp;#039;P1324&amp;#039;, {[&amp;#039;enlace&amp;#039;]=&amp;#039;no&amp;#039;, uno=&amp;#039;sí&amp;#039;}}}&lt;br /&gt;
	local SegErrores= argumentos{&amp;#039;seguimiento_de_errores&amp;#039;, {propiedad, &amp;#039;P1401&amp;#039;, {[&amp;#039;enlace&amp;#039;]=&amp;#039;no&amp;#039;, uno=&amp;#039;sí&amp;#039;}}}&lt;br /&gt;
&lt;br /&gt;
	if SitioWeb then table.insert(SitiosWeb, generarEnlace(SitioWeb, &amp;#039;Sitio web oficial&amp;#039;)) end&lt;br /&gt;
	if Blog then table.insert(SitiosWeb, generarEnlace(Blog, &amp;#039;Blog&amp;#039;)) end&lt;br /&gt;
	if Repo then table.insert(SitiosWeb, generarEnlace(Repo, &amp;#039;Repositorio de código&amp;#039;)) end&lt;br /&gt;
	if SegErrores then table.insert(SitiosWeb, generarEnlace(SegErrores, &amp;#039;Seguimiento de errores&amp;#039;)) end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(SitiosWeb, &amp;#039;\n&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function generarEnlace(enlace, texto)&lt;br /&gt;
	local enlazar = require(&amp;#039;Módulo:URL&amp;#039;).enlazar&lt;br /&gt;
	enlace = enlace:match(&amp;#039;.+:?//(.+) .+$&amp;#039;) or enlace&lt;br /&gt;
	enlace = enlazar(enlace, texto) or &amp;#039;&amp;#039;&lt;br /&gt;
	enlace = enlace and &amp;#039;&amp;lt;div&amp;gt;&amp;#039;..enlace..&amp;#039;&amp;lt;/div&amp;gt;\n&amp;#039;&lt;br /&gt;
	return enlace&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function seccionDesplegable(frame, titulo, lista)&lt;br /&gt;
	if not lista then return end&lt;br /&gt;
	return frame:preprocess(&amp;#039;{{Sección desplegable|align=left|título=&amp;#039; .. titulo .. &amp;#039;|datos=&amp;#039;.. lista .. &amp;#039;|estilotitulo=background-color:&amp;#039; .. ColorEtiqueta .. &amp;#039;;}}&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function obtenerModeloDesarrollo()&lt;br /&gt;
	if Clasificacion[&amp;#039;Nucleos&amp;#039;][ParteDe] == &amp;#039;xnu&amp;#039; then&lt;br /&gt;
		return &amp;#039;[[código cerrado]] con componentes de [[código abierto]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if Clasificacion[&amp;#039;Nucleos&amp;#039;][InstanciaDe] == &amp;#039;linux&amp;#039; or Clasificacion[&amp;#039;Nucleos&amp;#039;][ParteDe] == &amp;#039;linux&amp;#039; or Clasificacion[&amp;#039;Nucleos&amp;#039;][ParteDe] == &amp;#039;bsd&amp;#039; or Clasificacion[&amp;#039;TipoSoftware&amp;#039;][InstanciaDe] == &amp;#039;códigoAbierto&amp;#039; then&lt;br /&gt;
		return &amp;#039;[[código abierto]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function obtenerVersiones(frame)&lt;br /&gt;
	local Versiones			= elementoTabla(fakeEntidad(idEntidad, &amp;#039;P348&amp;#039;), &amp;#039;claims&amp;#039;, &amp;#039;P348&amp;#039;)&lt;br /&gt;
	local VersionesEstables	= {}&lt;br /&gt;
	local VersionesBeta		= {}&lt;br /&gt;
	&lt;br /&gt;
	local Autoref	= argumentos{&amp;#039;autoref&amp;#039;}&lt;br /&gt;
	Autoref			= &amp;#039;sí&amp;#039; -- Solo para depuración&lt;br /&gt;
&lt;br /&gt;
	if Versiones then&lt;br /&gt;
		for k,v in pairs(Versiones) do&lt;br /&gt;
			VersionValor		= elementoTabla(v, &amp;#039;mainsnak&amp;#039;, &amp;#039;datavalue&amp;#039;, &amp;#039;value&amp;#039;) or &amp;#039;&amp;#039;&lt;br /&gt;
			VersionTitulo		= elementoTabla(v, &amp;#039;qualifiers&amp;#039;, &amp;#039;P1476&amp;#039;, 1, &amp;#039;datavalue&amp;#039;, &amp;#039;value&amp;#039;, &amp;#039;text&amp;#039;)&lt;br /&gt;
			VersionFecha		= elementoTabla(v, &amp;#039;qualifiers&amp;#039;, &amp;#039;P577&amp;#039;, 1, &amp;#039;datavalue&amp;#039;, &amp;#039;value&amp;#039;)&lt;br /&gt;
			VersionTipo			= elementoTabla(v, &amp;#039;qualifiers&amp;#039;, &amp;#039;P548&amp;#039;, 1, &amp;#039;datavalue&amp;#039;, &amp;#039;value&amp;#039;, &amp;#039;id&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
			if VersionTitulo then VersionValor = VersionTitulo end&lt;br /&gt;
&lt;br /&gt;
			VersionRefURL		= elementoTabla(elementoTabla(v, &amp;#039;references&amp;#039;, 1), &amp;#039;snaks&amp;#039;, &amp;#039;P854&amp;#039;,  1, &amp;#039;datavalue&amp;#039;, &amp;#039;value&amp;#039;)&lt;br /&gt;
			&lt;br /&gt;
			if not VersionRefURL == nil then&lt;br /&gt;
				VersionValor = &amp;#039;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[&amp;#039; .. VersionRefURL .. &amp;#039; &amp;#039; .. VersionValor .. &amp;#039;]&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if VersionFecha then&lt;br /&gt;
				VersionValor = VersionValor .. &amp;#039;&amp;lt;small style=&amp;quot;display: block&amp;quot;&amp;gt;&amp;#039; .. require(&amp;#039;Módulo:Wikidata/Fecha&amp;#039;).FormateaFechaHora(VersionFecha, { enlace = &amp;#039;no&amp;#039; }) .. &amp;#039;&amp;lt;/small&amp;gt;&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
			if VersionTipo == &amp;#039;Q2804309&amp;#039; then&lt;br /&gt;
				table.insert(VersionesEstables, VersionValor)&lt;br /&gt;
			elseif VersionTipo == &amp;#039;Q3295609&amp;#039; then&lt;br /&gt;
				table.insert(VersionesBeta, VersionValor)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table.sort(VersionesEstables, paddedcompare)&lt;br /&gt;
		table.sort(VersionesBeta, paddedcompare)&lt;br /&gt;
&lt;br /&gt;
		Versiones			= {}&lt;br /&gt;
&lt;br /&gt;
		if VersionesEstables[2] then table.insert(Versiones, seccionDesplegable(frame, &amp;#039;Estables&amp;#039;, &amp;#039;* &amp;#039; .. table.concat(VersionesEstables, &amp;#039;\n* &amp;#039;))) end&lt;br /&gt;
		if VersionesBeta[2] then table.insert(Versiones, seccionDesplegable(frame, &amp;#039;Pruebas&amp;#039;, &amp;#039;* &amp;#039; .. table.concat(VersionesBeta, &amp;#039;\n* &amp;#039;))) end&lt;br /&gt;
&lt;br /&gt;
		if Versiones[2] then return {[&amp;#039;lista&amp;#039;] = table.concat(Versiones, &amp;#039;\n&amp;#039;), [&amp;#039;estable&amp;#039;] = VersionesEstables[1], [&amp;#039;beta&amp;#039;] = VersionesBeta[1]} end&lt;br /&gt;
		return {[&amp;#039;estable&amp;#039;] = VersionesEstables[1], [&amp;#039;beta&amp;#039;] = VersionesBeta[1]}&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function obtenerValorDeArgumentos(list)&lt;br /&gt;
	-- global args&lt;br /&gt;
	local lang = mw.language.getContentLanguage()&lt;br /&gt;
	local err, key&lt;br /&gt;
	if type(list) == &amp;#039;number&amp;#039; then&lt;br /&gt;
		key = args[list]&lt;br /&gt;
	elseif type(list) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		key = args[list] or args[lang:ucfirst(list)]&lt;br /&gt;
	elseif type(list) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		for num, val in ipairs(list) do&lt;br /&gt;
			if type(val) == &amp;#039;string&amp;#039; then&lt;br /&gt;
				key = ModuloArgumentos.obtenerValorDeArgumentos(val)&lt;br /&gt;
			elseif type(val) == &amp;#039;function&amp;#039; then&lt;br /&gt;
				err, key = pcall(val)&lt;br /&gt;
				if err ~= true then&lt;br /&gt;
					key = nil&lt;br /&gt;
				end&lt;br /&gt;
			elseif type(val) == &amp;#039;table&amp;#039; then&lt;br /&gt;
				if val[1] and type(val[1]) == &amp;#039;function&amp;#039; then&lt;br /&gt;
					err, key = pcall(val[1], unpack(val, 2))&lt;br /&gt;
					if err ~= true then&lt;br /&gt;
						key = nil&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if key == &amp;#039;no&amp;#039; or key == &amp;#039;&amp;#039; then&lt;br /&gt;
				key = nil&lt;br /&gt;
				return key&lt;br /&gt;
			elseif key ~= nil then&lt;br /&gt;
				return key -- break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return key&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Función envoltura para aregar citas en la ficha&lt;br /&gt;
function citar(frame, Datos, Grupo)&lt;br /&gt;
	if not type(Datos) == table then return &amp;#039;&amp;#039; end&lt;br /&gt;
	if type(Grupo) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		Grupo = &amp;#039; group=&amp;quot;&amp;#039; .. Grupo:gsub(&amp;#039;|&amp;#039;, &amp;#039;{{!}}&amp;#039;) .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		Grupo = &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local Salida	= {}&lt;br /&gt;
	for k,v in pairs(Datos) do&lt;br /&gt;
		table.insert(Salida, k .. &amp;#039;=&amp;#039; .. v)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if next(Salida) then return frame:preprocess(&amp;#039;&amp;lt;ref&amp;#039; .. Grupo .. &amp;#039;&amp;gt;{{cita web|&amp;#039; .. table.concat(Salida, &amp;#039;|&amp;#039;) .. &amp;#039;}}&amp;lt;/ref&amp;gt;&amp;#039;) end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Función, propiedad() personalizada&lt;br /&gt;
function propiedad(idPropiedad, opciones, entidad)&lt;br /&gt;
	if not entidad then entidad = fakeEntidad(idEntidad, idPropiedad) end&lt;br /&gt;
&lt;br /&gt;
	if entidad and entidad.claims and entidad.claims[idPropiedad] then&lt;br /&gt;
		if not opciones then&lt;br /&gt;
			opciones = {[&amp;#039;linkback&amp;#039;]=&amp;#039;sí&amp;#039;}&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		opciones[&amp;#039;idioma&amp;#039;] = &amp;#039;es&amp;#039;&lt;br /&gt;
&lt;br /&gt;
		local ValorPosicional = 1&lt;br /&gt;
		if type(opciones[&amp;#039;valor_posicional&amp;#039;]) == &amp;#039;number&amp;#039; then ValorPosicional = opciones[&amp;#039;valor_posicional&amp;#039;] end&lt;br /&gt;
		&lt;br /&gt;
		local ValorPosicionalCalif = 1&lt;br /&gt;
		if type(opciones[&amp;#039;valor_posicional_calif&amp;#039;]) == &amp;#039;number&amp;#039; then ValorPosicional = opciones[&amp;#039;valor_posicional_calif&amp;#039;] end&lt;br /&gt;
&lt;br /&gt;
		local Calificador = opciones[&amp;#039;calificador&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
		local Obj = elementoTabla(Entidad, &amp;#039;claims&amp;#039;, idPropiedad, ValorPosicional)&lt;br /&gt;
		if Calificador then&lt;br /&gt;
			Obj = elementoTabla(Obj, &amp;#039;qualifiers&amp;#039;, Calificador, ValorPosicionalCalif)&lt;br /&gt;
		else&lt;br /&gt;
			Obj = elementoTabla(Obj, &amp;#039;mainsnak&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if opciones[&amp;#039;formato&amp;#039;] == &amp;#039;número&amp;#039; then&lt;br /&gt;
			if elementoTabla(Obj, &amp;#039;datavalue&amp;#039;, &amp;#039;type&amp;#039;) == &amp;#039;quantity&amp;#039; then&lt;br /&gt;
				return formatoNumero(elementoTabla(Obj, &amp;#039;mainsnak&amp;#039;, &amp;#039;datavalue&amp;#039;, &amp;#039;value&amp;#039;, &amp;#039;amount&amp;#039;))&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		-- Valores cuya unidad deba ir a la derecha, separada de un espacio&lt;br /&gt;
		elseif opciones[&amp;#039;formato&amp;#039;] == &amp;#039;unidad&amp;#039; then&lt;br /&gt;
			if elementoTabla(Entidad, &amp;#039;claims&amp;#039;, idPropiedad, 2, &amp;#039;mainsnak&amp;#039;, &amp;#039;datavalue&amp;#039;) then&lt;br /&gt;
				return formatoNumero(elementoTabla(Entidad, &amp;#039;claims&amp;#039;, idPropiedad, 1, &amp;#039;mainsnak&amp;#039;, &amp;#039;datavalue&amp;#039;, &amp;#039;value&amp;#039;, &amp;#039;amount&amp;#039;)) .. &amp;#039;&amp;amp;nbsp;-&amp;amp;nbsp;&amp;#039; .. numeroUnidad(elementoTabla(Entidad, &amp;#039;claims&amp;#039;, idPropiedad, 2, &amp;#039;mainsnak&amp;#039;, &amp;#039;datavalue&amp;#039;))&lt;br /&gt;
			else&lt;br /&gt;
				return numeroUnidad(elementoTabla(Entidad, &amp;#039;claims&amp;#039;, idPropiedad, 1, &amp;#039;mainsnak&amp;#039;, &amp;#039;datavalue&amp;#039;))&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
		-- Valores cuya unidad deba ir a la izquierda (ej, las monedas o divisas)&lt;br /&gt;
		elseif opciones[&amp;#039;formato&amp;#039;] == &amp;#039;moneda&amp;#039; then&lt;br /&gt;
			if elementoTabla(Entidad, &amp;#039;claims&amp;#039;, idPropiedad, 2, &amp;#039;mainsnak&amp;#039;, &amp;#039;datavalue&amp;#039;) then&lt;br /&gt;
				return numeroUnidad(elementoTabla(Entidad, &amp;#039;claims&amp;#039;, idPropiedad, 1, &amp;#039;mainsnak&amp;#039;, &amp;#039;datavalue&amp;#039;), false) .. &amp;#039;&amp;amp;nbsp;-&amp;amp;nbsp;&amp;#039; .. numeroUnidad(elementoTabla(Entidad, &amp;#039;claims&amp;#039;, idPropiedad, 2, &amp;#039;mainsnak&amp;#039;, &amp;#039;datavalue&amp;#039;), false)&lt;br /&gt;
			else&lt;br /&gt;
				return numeroUnidad(elementoTabla(Entidad, &amp;#039;claims&amp;#039;, idPropiedad, 1, &amp;#039;mainsnak&amp;#039;, &amp;#039;datavalue&amp;#039;), false)&lt;br /&gt;
			end&lt;br /&gt;
		&lt;br /&gt;
		-- Devolver el ID de la entidad, para propiedades de entidad&lt;br /&gt;
		elseif opciones[&amp;#039;formato&amp;#039;] == &amp;#039;entidadID&amp;#039; then&lt;br /&gt;
			return elementoTabla(Obj, &amp;#039;datavalue&amp;#039;, &amp;#039;value&amp;#039;, &amp;#039;id&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Invocar a la función fallback si no se cumplen las condiciones anteriores&lt;br /&gt;
		opciones.entityId  = entidad.id&lt;br /&gt;
		opciones.propiedad = idPropiedad&lt;br /&gt;
		return ModuloWikidata.getPropiedad(opciones, entidad.claims[idPropiedad])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function fakeEntidad(idEntidad, idPropiedad)&lt;br /&gt;
	if not idEntidad then return nil end&lt;br /&gt;
	return { [&amp;#039;claims&amp;#039;] = { [idPropiedad] = mw.wikibase.getAllStatements(idEntidad, idPropiedad) } }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function imagenWikidata(idPropiedad)&lt;br /&gt;
	return ModuloWikidata.obtenerImagenWikidata( fakeEntidad(idEntidad, idPropiedad), idPropiedad )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Compare 2 version numbers // Compara dos números de versión&lt;br /&gt;
-- Return: True if version number a &amp;gt; b (for descending order)&lt;br /&gt;
-- Retorno: True si la versión número a &amp;gt; b (por orden descendente)&lt;br /&gt;
-- Implementation details: Uses string zero-padding to 8 digits for each part&lt;br /&gt;
-- Detalles de implementación: utiliza un relleno de cadena cero de 8 dígitos para cada parte&lt;br /&gt;
-- Author // Autor: User:Ahecht&lt;br /&gt;
-- Source // Fuente: [[Special:PermaLink/141742109#Version sorting]]&lt;br /&gt;
function paddedcompare(a, b)&lt;br /&gt;
	local function zeropad(s)&lt;br /&gt;
		local o = &amp;quot;&amp;quot;&lt;br /&gt;
		for v in string.gmatch(s, &amp;quot;(%d*%D*)&amp;quot;) do&lt;br /&gt;
			if tonumber(string.match(v, &amp;quot;(%d*)&amp;quot;)) then&lt;br /&gt;
				o=o..string.format(&amp;#039;%08d&amp;#039;, tonumber(string.match(v, &amp;quot;(%d*)&amp;quot;)))..(string.match(v, &amp;quot;(%D+)&amp;quot;) or &amp;#039;&amp;#039;)&lt;br /&gt;
			else&lt;br /&gt;
				o=o..v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return o&lt;br /&gt;
	end&lt;br /&gt;
	return zeropad(a) &amp;gt; zeropad(b)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p._paddedcompare = paddedcompare&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>netxipedia&gt;Nacaru</name></author>
	</entry>
</feed>