Diferencia entre revisiones de «Módulo:Categorizar»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Añado una corrección de idioma
Según d:Q645928
Línea 10: Línea 10:
local arreglarCategorias = {
local arreglarCategorias = {
['géneros película'] = {
['géneros película'] = {
['Películas de cine bélico'] = 'Películas de guerra'
['Películas de cine bélico'] = 'Películas de guerra'
,['Películas de cine de acción'] = 'Películas de acción'
,['Películas de cine de acción'] = 'Películas de acción'
,['Películas de cine de artes marciales'] = 'Películas de artes marciales'
,['Películas de cine de artes marciales'] = 'Películas de artes marciales'
,['Películas de cine de aventuras'] = 'Películas de aventuras'
,['Películas de cine de aventuras'] = 'Películas de aventuras'
,['Películas de cine de ciencia ficción'] = 'Películas de ciencia ficción'
,['Películas de cine de ciencia ficción'] = 'Películas de ciencia ficción'
,['Películas de cine de monstruos'] = 'Películas de monstruos'
,['Películas de cine de monstruos'] = 'Películas de monstruos'
,['Películas de cine de terror'] = 'Películas de terror'
,['Películas de cine de terror'] = 'Películas de terror'
Línea 20: Línea 20:
,['Películas de cine documental'] = 'Películas de documental'
,['Películas de cine documental'] = 'Películas de documental'
,['Películas de cine dramático'] = 'Películas dramáticas'
,['Películas de cine dramático'] = 'Películas dramáticas'
,['Películas de cine fantásticas'] = 'Películas fantásticas'
,['Películas de cine fantásticas'] = 'Películas fantásticas'
,['Películas de cine policíaco'] = 'Películas policíacas'
,['Películas de cine policíaco'] = 'Películas policíacas'
,['Películas de cine romántico'] = 'Películas románticas'
,['Películas de cine romántico'] = 'Películas románticas'
Línea 26: Línea 26:
,['Películas de comedia romántica'] = 'Comedias románticas'
,['Películas de comedia romántica'] = 'Comedias románticas'
,['Películas de cortometraje'] = 'Cortometrajes'
,['Películas de cortometraje'] = 'Cortometrajes'
,['Películas de película biográfica'] = 'Películas biográficas'
,['Películas de cine biográfico'] = 'Películas biográficas'
,['Películas de película infantil'] = 'Películas infantiles'
,['Películas de película infantil'] = 'Películas infantiles'
,['Películas de western'] = 'Wéstern'
,['Películas de western'] = 'Wéstern'

Revisión del 17:57 28 mar 2017

Icono de documentación de módulo Documentación del módulo[ver] [editar] [historial] [purgar]

A continuación se muestra la documentación transcluida desde la subpágina /doc. [salta a la caja de código]


Uso


Esta documentación está transcluida desde Módulo:Categorizar/doc.
Por favor, añade las categorías en la subpágina de documentación y los interwikis en Wikidata. Subpáginas de este módulo.

local z = {}

local argumento  = {}    -- Argumentos eliminando argumentos sin datos
local procesador = {}

-- Módulos utilizados
local ModuloArgumentos       = require('Módulo:Argumentos')
local ModuloTablas           = require('Módulo:Tablas')

local arreglarCategorias = {
	['géneros película'] = {
		['Películas de cine bélico']              = 'Películas de guerra'
		,['Películas de cine de acción']          = 'Películas de acción'
		,['Películas de cine de artes marciales'] = 'Películas de artes marciales'
		,['Películas de cine de aventuras']       = 'Películas de aventuras'
		,['Películas de cine de ciencia ficción'] = 'Películas de ciencia ficción'
		,['Películas de cine de monstruos']       = 'Películas de monstruos'
		,['Películas de cine de terror']          = 'Películas de terror'
		,['Películas de cine de vampiros']        = 'Películas de vampiros'
		,['Películas de cine documental']         = 'Películas de documental'
		,['Películas de cine dramático']          = 'Películas dramáticas'
		,['Películas de cine fantásticas']        = 'Películas fantásticas'
		,['Películas de cine policíaco']          = 'Películas policíacas'
		,['Películas de cine romántico']          = 'Películas románticas'
		,['Películas de comedia dramática']       = ''
		,['Películas de comedia romántica']       = 'Comedias románticas'
		,['Películas de cortometraje']            = 'Cortometrajes'
		,['Películas de cine biográfico']         = 'Películas biográficas'
		,['Películas de película infantil']       = 'Películas infantiles'
		,['Películas de western']                 = 'Wéstern'
		,['Películas de wéstern']                 = 'Wéstern'
		
		,['de drama']      = 'dramáticas'
		,['de comedia']    = 'cómicas'
		,['de musical']    = 'musicales'
		,['de suspenso']   = 'de suspense'
		,['de thriller']   = 'de suspense'
		,['de fantasía']   = 'fantásticas'
		,['de fantástico'] = 'fantásticas'
		,['de histórico']  = 'históricas'
		,['de romance']    = 'románticas'
		,['de horror']     = 'de terror'
		,['de aventura']   = 'de aventuras'
		,['de aventurass'] = 'de aventuras'
		,['de infantil']   = 'infantiles'
		,['de policial']   = 'policíacas'
		,['de histórica']  = 'históricas'
		,['de romántica']  = 'románticas'
		,['de bélico']     = 'de guerra'
		,['de biográfica'] = 'biográficas'
		,['de biográfico'] = 'biográficas'
		,['de bélica']     = 'de guerra'
	},

	['nombre país'] = {
		 ['USA']                       = 'Estados Unidos'
		,['E. E. U. U.']               = 'Estados Unidos'
		,['Estados Unidos de América'] = 'Estados Unidos'
		,['Canada']                    = 'Canadá'
		,['EE.UU.']                    = 'Estados Unidos'
		,['Estados unidos']            = 'Estados Unidos'
		,['EE. UU.']                   = 'Estados Unidos'
		,['URSS']                      = 'Unión Soviética'
		,['United States']             = 'Estados Unidos'
		,['Swazilandia']               = 'Suazilandia'
		,['Cote d\'Ivoire']            = 'Costa de Marfil'
		,['Niger']                     = 'Níger'
		,['Nígeria']                   = 'Nigeria'
		,['Benin']                     = 'Benín'
		,['Gabon']                     = 'Gabón'
		,['Alemania del Oeste']        = 'Alemania Occidental'
		,['Haiti']                     = 'Haití'
		,['Panama']                    = 'Panamá'
		,['República Bolivariana de Venezuela'] = 'Venezuela'
	},

	['nombre idioma'] = {
		 ['castellano'] = 'español'
		,['no aplica (cine mudo)'] = 'mudas'
	}
}

function z.Categorizar( frame )
	
	-- Obtener una copia de los argumentos eliminando los argumentos sin valor
	argumento = ModuloArgumentos.obtenerArgumentosConValor( frame )
	procesador = frame
	
	local patron    = argumento['patrón']    or false     -- Patrón que debe cumplir la categoría
	local separador = argumento['separador'] or '<br />'  -- Separador utilizado en la categoría
	local datos     = argumento
	
	-- Comprueba si el parámetro test está definido
	local opciones = {}
	opciones['test']    = (argumento["test"] and argumento["test"] == "sí") or false
    opciones['enlace']  = (argumento["enlace"] and argumento["enlace"] == "sí") or false
    opciones['filtrar'] = not argumento["filtrar"] or argumento["filtrar"] ~= "no"
    opciones['formato'] = argumento["formato"] or ''
    opciones['subst']   = (argumento["arreglar"] and arreglarCategorias[argumento["arreglar"]]) or {}
    
    -- Categoriza y devuelve el resultado
	return z.categoriza(patron, separador, datos, opciones)
end


function z.categoriza(patron, separador, datos, opciones)

	-- Variable donde se van almacenando las categorías válidas
	categorias = ''
	
	-- Sólo categoriza si tanto el patrón como el separador están definidos
	-- (aunque el separador no tiene porque estár contenido en el resto de parámetros)
	if (patron and separador) then
		
		-- Creo las tablas que almacenarán el resultado final y el valor temporal
		resultado = {}
		tmp = {}
		
		-- Inicializo el resultado al patrón original
		resultado[1] = patron
		
		-- Elimino los parámetros que no tienen valor numérico y divido los numéricos
		-- en el separador indicado como parámetro
		hayDatos = false
		datosLimpios = {}
		for k, v in pairs(datos) do
			if k and type(k) == 'number' and type(k) ~= 'function' then 
				datosLimpios[k] = v and mw.text.gsplit(v, '%s*'..separador..'%s*') or ''
				hayDatos = true
			end
		end
			
		if not hayDatos then
			return '';
		end
		
		-- Recorro todos los argumentos 
		for parametro, v in pairs(datosLimpios) do
			
			actualizo = false
			tmp = {}
			
			-- Actualiza los parámetros en caso de que sea necesario
			for trozo in datosLimpios[parametro] or {} do
				for clave,cat in pairs(resultado) do
					if not trozo:match('^%s*$') then
						tmp[#tmp+1] = string.gsub(cat, "$"..parametro, trozo)
						actualizo = true
					end
				end
			end
		
			-- Si se ha realizado algún cambio vuelco los valores nuevos en resultado
			if actualizo then
				resultado = {}
				resultado = tmp
			end
		end
	
		local prefijo = ''
		local sufijo  = ''
		
		if opciones['test'] then
			prefijo = '«'
			sufijo  = '»'
		elseif opciones['enlace'] then
			prefijo = '[[:'
			sufijo  = ']]'
		else 
			prefijo = '[['
			sufijo  = ']]'
		end
		
		if opciones['formato'] == 'lista' and (opciones['test'] or opciones['enlace']) then
			prefijo = '\n* ' .. prefijo
		end
		
		-- Compruebo si existen los nombres de las categorías y los añado a la salida
		for clave,cat in pairs(resultado) do
			if not cat:find("%$") and not cat:find("%[%[:d:") then
				cat = procesador:preprocess('{{Desenlazar|' .. cat .. '}}')
				
				-- Aplico el grupo de correcciones correspondiente a los nombres
				if opciones["subst"][cat] then
					cat = opciones["subst"][cat]
				else
					for antiguo,nuevo in pairs(opciones["subst"]) do
						cat = string.gsub(cat, antiguo, nuevo)
					end
				end
			
				categoria = mw.title.new("Categoría:" .. cat)
				
				if categoria and (not opciones['filtrar'] or categoria.exists) then
					categorias = categorias .. prefijo .. categoria.fullText .. sufijo
				elseif not categoria and opciones['test'] then
					categorias = categorias .. '<span class="error">Error en nombre de categoría: «Categoría:' .. cat .. '»</span>'
        		end
    		end
		end
	end
	
			
	return categorias
	
end

return z