Diferencia entre revisiones de «Módulo:Personaje»

De Inkipedia
(Cambiado el orden para intentar solucionar un error)
(Cambiada la optimización de la plantilla para soportar cuando una imagen no está disponible, necesario comprobar lo que está fallando)
Línea 65: Línea 65:


     -- Lógica para determinar la imagen
     -- Lógica para determinar la imagen
     if icono ~= nil then
   
     if estado ~= nil then
    local constructorProvisional
        return string.format("[[File:%s Icon %s %s.png|%dpx|link=%s]]", juego, nombreIngles, estado, tamano, nombre)
   
    else
     if estado ~= nil then
        return string.format("[[File:%s Icon %s.png|%dpx|link=%s]]", juego, nombreIngles, tamano, nombre)
     if mw.title.new("File:" .. juego .. " Icon " .. nombreIngles .. " " .. estado .. ".png").exists then
    end
    constructorProvisional = string.format("[[File:%s Icon %s %s.png|%dpx|link=%s]]", juego, nombreIngles, estado, tamano, nombre)
else
else
if estado ~= nil then
    constructorProvisional = string.format("[[File:Not found.png|%dpx|link=]]", tamano)
        return string.format("[[File:%s Icon %s %s.png|%dpx|link=%s]] [[%s]]", juego, nombreIngles, estado, tamano, nombre, nombre)
end
    else
else
        return string.format("[[File:%s Icon %s.png|%dpx|link=%s]] [[%s]]", juego, nombreIngles, tamano, nombre, nombre)
    if mw.title.new("File:" .. juego .. " Icon " .. nombreIngles .. ".png").exists then
    end
    constructorProvisional = string.format("[[File:%s Icon %s.png|%dpx|link=%s]]", juego, nombreIngles, tamano, nombre)
else
constructorProvisional = string.format("[[File:%s Icon %s.png|%dpx|link=%s]]", juego, nombreIngles, tamano, nombre)
    --constructorProvisional = string.format("[[File:Not found.png|%dpx|link=]]", tamano)
end
end
   
    if icono == nil then
constructorProvisional = string.format("%s [[%s]]", constructorProvisional, nombre)
return constructorProvisional
     end
     end
    return constructorProvisional
end
end


return m
return m

Revisión del 08:52 21 mar 2024

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

local m = {}

-- Función para normalizar el tipo de traducción
local function genericType(input)
    if input == nil then
    	return nil
    end
    -- Convertir a minúsculas
    input = input:lower()

    -- Tabla de mapeo para reemplazar letras con tildes y diéresis
    local mapping = {
        ["á"] = "a", ["é"] = "e", ["í"] = "i", ["ó"] = "o", ["ú"] = "u",
        ["à"] = "a", ["è"] = "e", ["ì"] = "i", ["ò"] = "o", ["ù"] = "u",
        ["ä"] = "a", ["ë"] = "e", ["ï"] = "i", ["ö"] = "o", ["ü"] = "u",
        ["ã"] = "a", ["ẽ"] = "e", ["ĩ"] = "i", ["õ"] = "o", ["ũ"] = "u",
        ["ñ"] = "n",
        ["ç"] = "c",
        ["Á"] = "a", ["É"] = "e", ["Í"] = "i", ["Ó"] = "o", ["Ú"] = "u",
		["À"] = "a", ["È"] = "e", ["Ì"] = "i", ["Ò"] = "o", ["Ù"] = "u",
		["Ä"] = "a", ["Ë"] = "e", ["Ï"] = "i", ["Ö"] = "o", ["Ü"] = "u",
		["Ã"] = "a", ["Ẽ"] = "e", ["Ĩ"] = "i", ["Õ"] = "o", ["Ũ"] = "u",
		["Ñ"] = "n",
		["Ç"] = "c"
    }
    
    -- Reemplazar letras con tilde y diéresis según la tabla de mapeo
    for k, v in pairs(mapping) do
        input = input:gsub(k, v)
    end

    -- Eliminar caracteres especiales y espacios
    input = input:gsub("[%s%p%c]", "")
    return input
end

function m.main(frame)
    local args = frame:getParent().args
    local juego = args["tipo"] or args[1]
    local nombre = args["nombre"] or args[2]
    local estado = args["estado"] or args[3]
    local tamano = args[4] or args["tamaño"] or 24
    local icono = args[5] or args["icono"] or nil
    
    -- Normalizar el nombre del juego
    juego = require('Módulo:Acortar_juego').getGame(juego)

    -- Traducir el personaje
    local nombreIngles = require('Módulo:Castellano').getPersonaje(nombre)
    
    if tamano == "icono" then
    	icono = tamano or icono
    	tamano = 24
    end
    
    if estado ~= nil and not tonumber(estado) and estado ~="icono" then
        estado = genericType(estado)
    elseif estado == "icono" then
    	icono = estado or icono
    	estado = nil
    elseif tonumber(estado) then
        tamano = tonumber(estado) or tamano
        estado = nil
    end

    -- Lógica para determinar la imagen
    
    local constructorProvisional
    
    if estado ~= nil then
    	if mw.title.new("File:" .. juego .. " Icon " .. nombreIngles .. " " .. estado .. ".png").exists then
		    constructorProvisional = string.format("[[File:%s Icon %s %s.png|%dpx|link=%s]]", juego, nombreIngles, estado, tamano, nombre)
		else
		    constructorProvisional = string.format("[[File:Not found.png|%dpx|link=]]", tamano)
		end
	 else
	    if mw.title.new("File:" .. juego .. " Icon " .. nombreIngles .. ".png").exists then
		    constructorProvisional = string.format("[[File:%s Icon %s.png|%dpx|link=%s]]", juego, nombreIngles, tamano, nombre)
		else
			constructorProvisional = string.format("[[File:%s Icon %s.png|%dpx|link=%s]]", juego, nombreIngles, tamano, nombre)
		    --constructorProvisional = string.format("[[File:Not found.png|%dpx|link=]]", tamano)
		end
	end
    
    if icono == nil then
		constructorProvisional = string.format("%s [[%s]]", constructorProvisional, nombre)
		return constructorProvisional
    end
    return constructorProvisional
end

return m