Módulo:JCC-utilidades
La documentación para este módulo puede ser creada en Módulo:JCC-utilidades/doc.
local p = {} -- variable que tendrá todas las funciones accesibles externamente
--[[
Aquí se ponen las expansiones (nombre del artículo) y metadatos específicos
Si no tienen metadatos, como valor poner true (necesitan tener un valor)
Si tienen metadatos, como por ejemplo marca de regulación, ponerla con propiedades: { ['marca'] = 'A' }
- marca: Marca de regulación
- estandar: Permitido en el formato estándar (para los que no tienen marca). Implica que también están permitidos en formato expandido
- expandido: Permitido en el formato expandido (para los que no tienen marca)
]]--
local _expansiones = {
['ex (TCG): Rubí & Zafiro'] = true,
['ex (TCG): Sandstorm'] = true,
['ex (TCG): Dragon'] = true,
['ex (TCG): Team Magma vs Team Aqua'] = true,
['ex (TCG): Hidden Legends'] = true,
['ex (TCG): FireRed & LeafGreen'] = true,
['ex (TCG): Team Rocket Returns'] = true,
['ex (TCG): Deoxys'] = true,
['ex (TCG): Emerald'] = true,
['ex (TCG): Fuerzas Ocultas'] = true,
['ex (TCG): Delta Species'] = true,
['ex (TCG): Legend Maker'] = true,
['ex (TCG): Holon Phantoms'] = true,
['ex (TCG): Crystal Guardians'] = true,
['ex (TCG): Dragon Frontiers'] = true,
['ex (TCG): Power Keepers'] = true,
['Diamante & Perla (TCG): Diamante & Perla'] = true,
['Diamante & Perla (TCG): Tesoros Misteriosos'] = true,
['Diamante & Perla (TCG): Maravillas Secretas'] = true,
['Diamante & Perla (TCG): Grandes Encuentros'] = true,
['Diamante & Perla (TCG): Majestic Dawn'] = true,
['Diamante & Perla (TCG): Despertar de las Leyendas'] = true,
['Diamante & Perla (TCG): Frente Tormentoso'] = true,
['Platino (TCG): Platino'] = true,
['Platino (TCG): Rising Rivals'] = true,
['Platino (TCG): Supreme Victors'] = true,
['Platino (TCG): Arceus'] = true,
['HeartGold & SoulSilver (TCG): HeartGold & SoulSilver'] = true,
['HeartGold & SoulSilver (TCG): Liberados'] = true,
['HeartGold & SoulSilver (TCG): Intrépidos'] = true,
['HeartGold & SoulSilver (TCG): Triunfadores'] = true,
['Llamada de las Leyendas (TCG)'] = true,
['Negro y Blanco (TCG): Negro y Blanco'] = { ['expandido'] = true },
["Colección de McDonald's 2011 (TCG)"] = { ['expandido'] = true },
['Negro y Blanco (TCG): Fuerzas Emergentes'] = { ['expandido'] = true },
['Negro y Blanco (TCG): Nobles Victorias'] = { ['expandido'] = true },
['Negro y Blanco (TCG): Próximos Destinos'] = { ['expandido'] = true },
['Negro y Blanco (TCG): Oscuros Exploradores'] = { ['expandido'] = true },
["Colección de McDonald's 2012 (TCG)"] = { ['expandido'] = true },
['Negro y Blanco (TCG): Dragones Majestuosos'] = { ['expandido'] = true },
['Tesoro de Dragones (TCG)'] = { ['expandido'] = true },
['Negro y Blanco (TCG): Fronteras Cruzadas'] = { ['expandido'] = true },
['Negro y Blanco (TCG): Tormenta Plasma'] = { ['expandido'] = true },
['Negro y Blanco (TCG): Glaciación Plasma'] = { ['expandido'] = true },
['Negro y Blanco (TCG): Explosión Plasma'] = { ['expandido'] = true },
["Colección de McDonald's 2013 (TCG)"] = { ['expandido'] = true },
['Negro y Blanco (TCG): Tesoros Legendarios'] = { ['expandido'] = true },
['Negro y Blanco (TCG): Kit de entrenamiento'] = { ['expandido'] = true },
['XY (TCG): Bienvenidos a Kalos'] = { ['expandido'] = true },
['XY (TCG): XY'] = { ['expandido'] = true },
['XY (TCG): Destellos de Fuego'] = { ['expandido'] = true },
["Colección de McDonald's 2014 (TCG)"] = { ['expandido'] = true },
['XY (TCG): Puños Furiosos'] = { ['expandido'] = true },
['XY (TCG): Fuerzas Fantasmales'] = { ['expandido'] = true },
['XY (TCG): Duelos Primigenios'] = { ['expandido'] = true },
['Doble Crisis (TCG)'] = { ['expandido'] = true },
['XY (TCG): Cielos Rugientes'] = { ['expandido'] = true },
['XY (TCG): Antiguos Orígenes'] = { ['expandido'] = true },
['XY (TCG): TURBOimpulso'] = { ['expandido'] = true },
["Colección de McDonald's 2015 (TCG)"] = { ['expandido'] = true },
['XY (TCG): TURBOlímite'] = { ['expandido'] = true },
['Generaciones (TCG)'] = { ['expandido'] = true },
['XY (TCG): Destinos Enfrentados'] = { ['expandido'] = true },
['XY (TCG): Asedio de Vapor'] = { ['expandido'] = true },
["Colección de McDonald's 2016 (TCG)"] = { ['expandido'] = true },
['XY (TCG): Evoluciones'] = { ['expandido'] = true },
['XY (TCG): Kit de entrenamiento'] = { ['expandido'] = true },
['XY (TCG): Kit de entrenamiento: Bisharp y Wigglytuff'] = { ['expandido'] = true },
['XY (TCG): Kit de entrenamiento: Latias y Latios'] = { ['expandido'] = true },
['XY (TCG): Kit de entrenamiento: Pikachu enmascarada y Suicune'] = { ['expandido'] = true },
['Sol y Luna (TCG): Sol y Luna'] = { ['expandido'] = true },
['Sol y Luna (TCG): Albor de Guardianes'] = { ['expandido'] = true },
['Sol y Luna (TCG): Sombras Ardientes'] = { ['expandido'] = true },
["Colección de McDonald's 2017 (TCG)"] = { ['expandido'] = true },
['Leyendas Luminosas (TCG)'] = { ['expandido'] = true },
['Sol y Luna (TCG): Invasión Carmesí'] = { ['expandido'] = true },
['Sol y Luna (TCG): Ultraprisma'] = { ['expandido'] = true },
['Sol y Luna (TCG): Luz Prohibida'] = { ['expandido'] = true },
["Colección de McDonald's 2018 (TCG)"] = { ['expandido'] = true },
['Sol y Luna (TCG): Tormenta Celestial'] = { ['expandido'] = true },
['Majestad de Dragones (TCG)'] = { ['expandido'] = true },
['Sol y Luna (TCG): Truenos Perdidos'] = { ['expandido'] = true },
['Sol y Luna (TCG): Unión de Aliados'] = { ['expandido'] = true },
['Detective Pikachu (TCG)'] = { ['expandido'] = true },
['Sol y Luna (TCG): Vínculos Indestructibles'] = { ['expandido'] = true },
['Sol y Luna (TCG): Mentes Unidas'] = { ['expandido'] = true },
['Destinos Ocultos (TCG)'] = { ['expandido'] = true },
["Colección de McDonald's 2019 (TCG)"] = { ['expandido'] = true },
['Sol y Luna (TCG): Eclipse Cósmico'] = { ['expandido'] = true },
['SM Black Star Promos (TCG)'] = { ['expandido'] = true },
['Sol y Luna (TCG): Kit de entrenamiento: Lycanroc y Raichu de Alola'] = { ['expandido'] = true },
['Espada y Escudo (TCG): Espada y Escudo'] = { ['marca'] = 'D' },
['Espada y Escudo (TCG): Choque Rebelde'] = { ['marca'] = 'D' },
['Espada y Escudo (TCG): Oscuridad Incandescente'] = { ['marca'] = 'D' },
['Camino de Campeones (TCG)'] = { ['marca'] = 'D' },
['Espada y Escudo (TCG): Voltaje Vívido'] = { ['marca'] = 'D' },
['Destinos Brillantes (TCG)'] = { ['expandido'] = true },
['Espada y Escudo (TCG): Estilos de Combate'] = { ['marca'] = 'E' },
['Espada y Escudo (TCG): Reinado Escalofriante'] = { ['marca'] = 'E' },
['Espada y Escudo (TCG): Cielos Evolutivos'] = { ['marca'] = 'E' },
['Espada y Escudo (TCG): Golpe Fusión'] = { ['marca'] = 'E' },
['Espada y Escudo (TCG): Astros Brillantes'] = { ['marca'] = 'E' },
['Espada y Escudo (TCG): Resplandor Astral'] = { ['marca'] = 'F' },
['Pokémon GO (TCG)'] = { ['marca'] = 'F' },
['Espada y Escudo (TCG): Origen Perdido'] = { ['marca'] = 'F' },
['Espada y Escudo (TCG): Tempestad Plateada'] = { ['marca'] = 'F' },
['Cenit Supremo (TCG)'] = { ['expandido'] = true },
['SWSH Black Star Promos (TCG)'] = { ['expandido'] = true },
['Escarlata y Púrpura (TCG): Escarlata y Púrpura'] = { ['marca'] = 'G' },
['Escarlata y Púrpura (TCG): Evoluciones en Paldea'] = { ['marca'] = 'G' },
['Escarlata y Púrpura (TCG): Llamas Obsidianas'] = { ['marca'] = 'G' },
['Escarlata y Púrpura (TCG): 151'] = { ['marca'] = 'G' },
['Escarlata y Púrpura (TCG): Brecha Paradójica'] = { ['marca'] = 'G' },
['Escarlata y Púrpura (TCG): Destinos de Paldea'] = { ['marca'] = 'G' },
['Escarlata y Púrpura (TCG): Fuerzas Temporales'] = { ['marca'] = 'H' },
['Escarlata y Púrpura (TCG): Mascarada Crepuscular'] = { ['marca'] = 'H' },
['Escarlata y Púrpura (TCG): Fábula Sombría'] = { ['marca'] = 'H' },
['SV Black Star Promos (TCG)'] = { ['expandido'] = true },
}
--[[
Los kits de entrenamiento tienen 2 iconos pero 1 solo artículo
Se indican los alias para la página del kit
]]--
local _kitsEntrenamiento = {
['Kit de entrenamiento EX Latias'] = 'Kit de Entrenador EX (TCG)',
['Kit de entrenamiento EX Latios'] = 'Kit de Entrenador EX (TCG)',
['Kit de entrenamiento EX Plusle'] = 'Kit de Entrenador EX 2 (TCG)',
['Kit de entrenamiento EX Minun'] = 'Kit de Entrenador EX 2 (TCG)',
['Kit de entrenamiento DP Lucario'] = 'Kit de Entrenador Diamante & Perla (TCG)',
['Kit de entrenamiento DP Manaphy'] = 'Kit de Entrenador Diamante & Perla (TCG)',
['Kit de entrenamiento HS Gyarados'] = 'Kit de Entrenador HeartGold & SoulSilver (TCG)',
['Kit de entrenamiento HS Raichu'] = 'Kit de Entrenador HeartGold & SoulSilver (TCG)',
['Kit de entrenamiento NB Excadrill'] = 'Kit de Entrenador Negro y Blanco (TCG)',
['Kit de entrenamiento NB Zoroark'] = 'Kit de Entrenador Negro y Blanco (TCG)',
['Kit de entrenamiento XY Sylveon'] = 'Kit de Entrenador XY (TCG)',
['Kit de entrenamiento XY Noivern'] = 'Kit de Entrenador XY (TCG)',
['Kit de entrenamiento XY Bisharp'] = 'Kit de Entrenador XY: Bisharp y Wigglytuff (TCG)',
['Kit de entrenamiento XY Wigglytuff'] = 'Kit de Entrenador XY: Bisharp y Wigglytuff (TCG)',
['Kit de entrenamiento XY Latias'] = 'Kit de Entrenador XY: Latias y Latios (TCG)',
['Kit de entrenamiento XY Latios'] = 'Kit de Entrenador XY: Latias y Latios (TCG)',
['Kit de entrenamiento XY Pikachu enmascarada'] = 'Kit de Entrenador XY: Pikachu Enmascarada y Suicune (TCG)',
['Kit de entrenamiento XY Suicune'] = 'Kit de Entrenador XY: Pikachu Enmascarada y Suicune (TCG)',
['Kit de entrenamiento SL Lycanroc'] = 'Kit de Entrenador Sol y Luna: Lycanroc y Raichu de Alola (TCG)',
['Kit de entrenamiento SL Raichu de Alola'] = 'Kit de Entrenador Sol y Luna: Lycanroc y Raichu de Alola (TCG)',
['Kit de entrenamiento SL Sandslash de Alola'] = 'Kit de Entrenador Sol y Luna: Sandslash de Alola y Ninetales de Alola (TCG)',
['Kit de entrenamiento SL Ninetales de Alola'] = 'Kit de Entrenador Sol y Luna: Sandslash de Alola y Ninetales de Alola (TCG)'
}
local function _getNombreCorto( expansion )
local idxStart, idxEnd
idxStart, idxEnd = mw.ustring.find( expansion, '(TCG): ', 1, true )
-- Caso XXX (TCG): Nombre
if idxEnd then
return mw.ustring.sub( expansion, idxEnd + 1 )
end
idxStart, idxEnd = mw.ustring.find( expansion, ' (TCG)', 1, true )
if idxStart ~= nil then
return mw.ustring.sub( expansion, 1, idxStart - 1 )
end
return expansion
end
--[[
Retorna una tabla con datos de la expansión
- articulo: (string) Nombre del artículo de la expansión
- corto: (string) Nombre corto
- expandido: (bool) Admitido en formato expandido
- estandar: (bool) Admitido en formato estándar
- marca: (string) Marca de regulación
]]--
function p.datosExpansion( expansion )
local key, idxStart, idxEnd, expansion2, kit, corto
corto = nil
kit = _kitsEntrenamiento[expansion]
if kit then
corto = expansion
expansion = kit
end
val = _expansiones[expansion]
if val == nil then
-- Nombre corto que solo le falta (TCG)?
expansion2 = string.format( '%s (TCG)', expansion )
val = _expansiones[expansion2]
if val then
expansion = expansion2
end
end
if val == nil and mw.ustring.find( expansion, '(TCG)', 1, true ) == nil then
-- Traducir nombre corto de expansión con nombre complejo
for key in pairs( _expansiones ) do
idxStart, idxEnd = mw.ustring.find( key, '(TCG): ', 1, true )
-- Caso XXX (TCG): Nombre
if idxEnd then
-- Encontrado, llamar ahora sí con los datos de la clave que sabemos que existe
if mw.ustring.sub( key, idxEnd + 1 ) == expansion then
return p.datosExpansion( key )
end
end
end
end
if val == nil or val == true then
-- No existe en la tabla. O está mal escrito, o no tiene datos
val = {}
if mw.ustring.find( expansion, ' (TCG)', 1, true ) then
val['articulo'] = expansion
else
val['articulo'] = string.format( '%s (TCG)', expansion )
end
elseif val == true then
-- Sin datos relevantes
val = {}
val['articulo'] = expansion
else
val['articulo'] = expansion
end
if corto then
val['corto'] = corto
else
val['corto'] = _getNombreCorto( expansion )
end
-- Si se admite en estándar, también en expandido
if val['estandar'] then
val['expandido'] = true
end
-- Si tiene marca de regulación D también se admite en estándar
-- XX esto se quita porque lo hará la plantilla de carta, para unificar criterios
--if val['marca'] == 'D' then
-- val['estandar'] = true
--end
return val
end
-- Retorna el enlace hacia el artículo de la expansión a partir del nombre corto (sin prefijo ni sufijo TCG) o largo
function p.enlaceExpansion( expansion )
local val = p.datosExpansion( expansion )
return string.format( '[[%s|%s]]', val['articulo'], val['corto'] )
end
-- Métodos para usarse directamente desde un {{#invoke:}}, llevan el prefijo wiki
-- Desde el #invoke: el único argumento es frame, hay que sacar el parámetro de sus args
function p.wikiEnlaceExpansion( frame )
return p.enlaceExpansion( frame.args[1] )
end
return p -- Todos los módulos terminan retornando la variable que contiene las funciones
--[==[
Pruebas
=p.enlaceExpansion( 'Vínculos Indestructibles' )
[[Sol y Luna (TCG): Vínculos Indestructibles|Vínculos Indestructibles]]
=p.enlaceExpansion( 'Llamada de las Leyendas' )
[[Llamada de las Leyendas (TCG)|Llamada de las Leyendas]]
=p.enlaceExpansion( 'Sol y Luna (TCG): Vínculos Indestructibles' )
[[Sol y Luna (TCG): Vínculos Indestructibles|Vínculos Indestructibles]]
=p.enlaceExpansion( 'Diamante & Perla' )
[[Diamante & Perla (TCG): Diamante & Perla|Diamante & Perla]]
=p.enlaceExpansion( 'Kit de entrenamiento DP Lucario' )
[[Diamante & Perla (TCG): Kit de entrenamiento|Kit de entrenamiento DP Lucario]]
]==]--