Modulo:PokémoncardInfobox
Jump to navigation
Jump to search
Questo modulo non ha ancora un manuale. Creane uno!
-- Ognuna di questa funzioni sostituisce uno switch. Le chiamate sono solo a titolo
-- di esempio, e possono prevedere variazioni.
local switches = {}
local w = require('Modulo:Wikilib')
local txt = require('Modulo:Wikilib/strings')
local t = require('Modulo:Wikilib/tables')
local ot = require('Modulo:Wikilib/others')
local c = mw.loadData('Modulo:Colore/data')
-- Wikicode for the images in nameImage
local nameImages = {
Leggenda = '[[File:Pokémon LEGGENDA.png|LEGGENDA]]',
PlasmaEX = '[[File:Pokémon EX.png|x18px|EX]]',
Galassia = '[[File:Pokémon SP G.png|Galassia]]',
Capopalestra = '[[File:Pokémon SP CP.png|Capopalestra]]',
Superquattro = '[[File:Pokémon SP 4.png|Superquattro]]',
Campione = '[[File:Pokémon SP C.png|Campione]]',
['Asso Lotta'] = '[[File:Pokémon SP AL.png|Asso Lotta]]',
Film = '[[File:Pokémon SP F.png|Film]]',
TURBO = '[[File:TURBO.png|TURBO]]',
Prism = '[[File:Stella prisma.png|17px|Stella prisma]]',
GX = '[[File:Icona Pokémon GX.svg|x18px|GX]]',
RedGX = '[[File:Pokémon Red GX.png|x18px|GX]]',
TTGX = '[[File:Pokémon TT GX.png|x18px|GX ALLEATI]]',
RedTTGX = '[[File:Pokémon Red TT GX.png|x18px|GX ALLEATI]]',
V = '[[File:Pokémon V.png|x18px|V]]',
VMAX = '[[File:Pokémon VMAX.png|x18px|VMAX]]'
}
t.tableKeysAlias(nameImages, {'PlasmaEX', 'Leggenda', 'Galassia'}, {{'EX', 'MegaEX'}, {'Legend'}, {'Galactic'}})
-- Ritorna "light" se il parametro è 'Light', "dark" se il parametro è
-- 'Dark', Rocket', 'Rocketex', 'Idro', 'Aqua', 'Magma', 'Galassia',
-- 'Galactic', 'Plasma' o 'PlasmaEX';
-- chiamata: {{#invoke | PokémoncardInfobox | background | <parametroSwitch> }}
switches.background = function(frame)
local bgShade = {Dark = 'dark', Light = 'light'}
t.tableKeysAlias(bgShade, {'Dark'}, {{'Rocket', 'Rocketex', 'Idro', 'Aqua', 'Magma',
'Galassia', 'Galactic', 'Plasma', 'PlasmaEX'}})
return bgShade[txt.trim(frame.args[1])]
end
switches.Background = switches.background
-- Questo è una piccola eccezione, ritorna direttamente il codice per i
-- bordi delle tabelle; non ritorna niente se il primo parametro NON è
-- 'Rocket', 'Rocketex', 'Idro', 'Aqua', 'Magma', 'Galassia','Galactic',
-- 'Dark', 'Light', 'ex', 'Shiny', 'Cristallo', 'Stella', 'Leggenda',
-- 'Crystal', 'Prime', 'EX', 'Legend', 'Plasma' o 'PlasmaEX'; imposta il bordo
-- a 4px se il primo parametro è 'ex', 'Rocketex', 'Stella', 'Cristallo', 'Prime', 'EX' o 'Leggenda', 8px altrimenti; ogni possibile parametro ha il suo colore, in base al valore del secondo parametro;
-- chiamata: {{#invoke | PokémoncardInfobox | border | <parametroSwitch> | {{{type|}}} }}
switches.border = function(frame)
local p = w.trimAll(mw.clone(frame.args))
local tab = {'border: ', 'px solid #'}
local wholeBorderDisplay = {'Rocket', 'Rocketex', 'Idro', 'Aqua', 'Magma', 'Galassia',
'Galactic', 'Dark', 'Light', 'ex', 'Shiny', 'Cristallo', 'Stella', 'Leggenda',
'Crystal', 'Prime', 'EX', 'Legend', 'Plasma', 'PlasmaEX'}
local wholeBorder4px = {'ex', 'Rocketex', 'Stella', 'Cristallo', 'Prime', 'EX', 'Leggenda'}
local wholeBorderColor = {Rocket = '222', Light = 'FFFF99', Cristallo = 'FFD700', Plasma = '014087',
ex = p[2] == 'Incolore' and 'D0D070' or 'DDD'}
t.tableKeysAlias(wholeBorderColor, {'Rocket', 'ex', 'Cristallo'}, {{'Rocketex', 'Idro', 'Aqua', 'Magma', 'Galassia', 'Galactic', 'Dark'},
{'EX', 'Prime'}, {'Stella', 'Leggenda'}})
if not t.linear_search(wholeBorderDisplay, p[1]) then
return ''
end
table.insert(tab, 2, t.linear_search(wholeBorder4px, p[1]) and '4' or '8')
table.insert(tab, wholeBorderColor[p[1]])
return table.concat(tab)
end
switches.Border = switches.border
-- Ritorna il colore del testo, con tanto di ombreggiatura, per i valori
-- 'Prime', 'Leggenda' o 'Ex' del primo parametro, sulla base degli altri due;
-- chiamata: {{#invoke | PokémoncardInfobox | color | <parametroSwitch> | {{{type|}}} | {{{type2|{{{type|}}}}}} }}
switches.color = function(frame)
local p = w.trimAll(mw.clone(frame.args))
local textColor = {Prime = p[2] == 'Incolore' and c.heartgold.normale or c.soulsilver.normale,
Leggenda = table.concat{c.heartgold.normale, '; text-shadow: #', c.soulsilver.normale, ' 0px 1px 1px'},
EX = p[2] == 'Oscurità' and 'FFF' or '000'}
return (textColor[p[1]] or p[3] == 'Oscurità' and 'FFF' or '000') .. ';"'
end
switches.Color = switches.color
-- Ritorna l'immagine da mettere accanto al nome del Pokémon,
-- se il parametro vale 'Leggenda', 'PlasmaEX', 'Galassia', 'Capopalestra', 'Superquattro', 'Campione', 'Asso Lotta', 'Film', 'EX', 'Legend' o
-- 'Galactic';
-- chiamata: {{#invoke | PokémoncardInfobox | nameImage | <parametroSwitch> }}
switches.nameImage = function(frame)
return nameImages[txt.trim(frame.args[1])] or ''
end
switches.NameImage = switches.nameImage
-- Ritorna un piccolo pedice, da mettere di fianco al nome, se il secondo
-- parametro vale 'δ', 'ex', 'exδ', 'X', 'star' o 'starδ';
-- chiamata: {{#invoke | PokémoncardInfobox | title | {{star}} | {{{level|}}} }}
switches.title = function(frame)
local p = w.trimAll(mw.clone(frame.args))
local title = {['δ'] = '<small>δ Specie Delta</small>', ex = "''<big><big>ex</big></big>''",
['exδ'] = "''<big><big>ex</big></big>'' <small>δ Specie Delta</small>", X = "<small>LIV.</small>''<big>X</big>''",
star = p[1], ['starδ'] = p[1] .. '<small>δ Specie Delta</small>'}
return title[p[2]] or (p[2] == '' and ' ' or '<small>LV.</small>' .. p[2])
end
switches.Title = switches.title
-- Ritorna un numero intero casuale in un certo intervallo, definito dai
-- due parametri;
-- chiamata: {{#invoke | PokémoncardInfobox | random | inf | sup }}
switches.random = function(frame)
return ot.random(tonumber(frame.args[1]), tonumber(frame.args[2]))
end
switches.Random = switches.random
-- Ritorna '888' se il parametro è 'Dark', 'Rocket', 'Rocketex', 'Idro',
-- 'Aqua', 'Magma', 'Galassia', 'Galactic', 'Plasma' o 'PlasmaEX'; 'FFF'
-- altrimenti.
-- chiamata: {{#invoke | PokémoncardInfobox | innerbg | <parametroSwitch> }}
switches.innerbg = function(frame)
local bgShade = {'Dark', 'Rocket', 'Rocketex', 'Idro', 'Aqua', 'Magma',
'Galassia', 'Galactic', 'Plasma', 'PlasmaEX'}
return t.linear_search(bgShade, txt.trim(frame.args[1])) and '888' or 'FFF'
end
switches.Innerbg = switches.innerbg
-- Ritorna la variante del sottotemplate per l'evostage, ciò che va dopo
-- 'PokémoncardInfobox/'.
-- chiamata: {{#invoke | PokémoncardInfobox | evostage | {{{evostage|}}} }}
switches.evostage = function(frame)
local stages = {Baby = 'Evobaby', Babyspecial = 'Evobabyspecial', Base = 'Evobasic', Basic = 'Evobasic',
Basicspecial = 'Evobasicspecial', ['Stage 1'] = 'Evostage1', ['Stage 2'] = 'Evostage2', ['LIV.X'] = 'EvoX',
EX = 'EvoEX', Legend = 'EvoLegendSpecial', Restored = 'Evorestored', MegaEX = 'EvomegaEX', TURBO = 'EvoTurbo',
Archeo = 'EvoArcheo'}
t.tableKeysAlias(stages, {'Stage 1', 'Stage 2', 'LIV.X', 'Legend'},
{{'Stadio 1'}, {'Stadio 2'}, {'LV.X'}, {'Leggenda', 'Leggenda2', 'Legend2'}})
return stages[txt.trim(frame.args[1])]
end
switches.Evostage = switches.evostage
-- Ritorna il completamento del link alla pagina del Pokémon nel GCC
-- (es [[Bulbasaur (GCC)#chiamata al template]])
-- chiamata: {{#invoke | PokémoncardInfobox | anchor | <parametroSwitch> | {{{level|}}} | {{{class|}}} | {{{cardname|}}} }}
switches.anchor = function(frame)
local p = w.trimAll(mw.clone(frame.args))
local anchor = {Leggenda = ' LEGGENDA', EX = '-EX', Galassia = ' G', Capopalestra = ' CP',
Superquattro = ' 4', Campione = ' C', ['Asso Lotta'] = ' AL', Film = ' F'}
t.tableKeysAlias(anchor, {'EX', 'Leggenda', 'Galassia'}, {{'PlasmaEX'}, {'Legend'}, {'Galactic'}})
local anchor1 = {star = ' ☆', ex = ' ex', X = ' LIV.X', EX = '-EX'}
anchor1['starδ'] = anchor1.star
local anchor2 = {ex = ' ex'}
anchor2['exδ'] = anchor2.ex
local anchor3 = {EX = '-EX'}
anchor3.PlasmaEX = anchor3.EX
return table.concat{p[4], anchor[p[1]] or '', anchor1[p[2]] or '', '|', p[4], anchor2[p[2]] or '', anchor3[p[3]] or ''}
end
switches.Anchor = switches.anchor
-- Ritorna l'immagine da inserire accando alla carta, se il
-- parametro vale 'Leggenda', 'Galassa', 'Capopalestra', 'Superquattro', 'Campione', 'Asso Lotta', 'Film', 'Legend' o 'Galactic'.
-- chiamata: {{#invoke | PokémoncardInfobox | cardNameImage | <parametroSwitch> }}
switches.cardNameImage = function(frame)
local images = {Leggenda = '[[File:Pokémon LEGGENDA.png]]', Galassia = '[[File:Pokémon SP G.png|Galactic]]',
Capopalestra = '[[File:Pokémon SP CP.png|Capopalestra]]', Superquattro = '[[File:Pokémon SP 4.png|Superquattro]]',
Campione = '[[File:Pokémon SP C.png|Campione]]', ['Asso Lotta'] = '[[File:Pokémon SP AL.png|Asso Lotta]]',
Film = '[[File:Pokémon SP F.png|Film]]'}
t.tableKeysAlias(images, {'Leggenda', 'Galassia'}, {{'Legend'}, {'Galactic'}})
return images[txt.trim(frame.args[1])] or ''
end
switches.CardNameImage = switches.cardNameImage
-- Gestisce le categorie in cui inserire la carta sulla base dei
-- parametri passati.
-- chiamata: {{#invoke | PokémoncardInfobox | categories | {{{evostage|}}} | <parametroSwitch> | {{{level|}}} }}
switches.categories = function(frame)
local p = w.trimAll(mw.clone(frame.args))
local stages = {Baby = '[[Category:Carte Baby Pokémon]]', Basic = '[[Categoria:Carte Pokémon Base]]',
Ricreato = '[[Categoria:Carte Pokémon Ricreate]]',
['Fase 1'] = '[[Categoria:Carte Pokémon Fase 1]][[Category:Carte evolute]]',
['Fase 2'] = '[[categoria:Carte Pokémon Fase 2]][[Category:Carte evoluzione]]',
['LIV.X'] = '[[Category:Carte Pokémon LIV.X]]'}
t.tableKeysAlias(stages, {'Baby', 'Basic', 'Ricreato', 'Fase 1', 'Fase 2', 'LIV.X'},
{{'Babyspecial'}, {'Base'}, {'Restored'}, {'Stage 1'}, {'Stage 2'}, {'LV.X'}})
local class = {Galassia = '[[Category:Carte Pokémon SP]][[Category:Team Galassia (GCC)]]',
Capopalestra = '[[Category:Carte Pokémon SP]]', Rocketex = '[[Category:Carte Pokémon ex]]',
Dark = '[[Category:Pokémon con "Dark" nei loro nomi]]',
Light = '[[Category:Pokémon con "Light" nei loro nomi]]', Prime = '[[Category:Carte Pokémon Prime]]',
Leggenda = '[[Category:Carte Pokémon LEGGENDA]]', EX = '[[Category:Carte Pokémon EX]]',
Plasma = '[[Category:Carte Team Plasma]]', Cristallo = '[[Category:Carte Pokémon Cristallo]]',
Stella = p[3]:match('star') and '[[Category:Carte Pokémon ☆]]' or '[[Category:Pokémon con "Shining" nei loro nomi]]',
TURBO = '[[Categoria:Carte TURBO]]', Archeo = '[[Categoria:Carte Pokémon Archeorisveglio]]'}
class.PlasmaEX = class.EX .. class.Plasma
t.tableKeysAlias(class, {'Capopalestra', 'Rocketex'}, {{'Superquattro', 'Campione', 'Asso Lotta', 'Film'}, {'ex'}})
return table.concat{stages[p[1]] or '', class[p[2]] or '',
p[3]:match('δ') and '[[Category:Carte Pokémon di δ Specie Delta]]' or ''}
end
switches.Categories = switches.categories
return switches