Differenze tra le versioni di "Modulo:PokémonInfo/BoxAbil"

Updating PokémonInfo-BoxAbil and the way gen spans are displayed by modules *** sovrascritto il testo esistente ***
m (Non mi piace per niente la soluzione, ma già che c'è ne approfitto per adesso. Prima o poi ci lavorerò)
(Updating PokémonInfo-BoxAbil and the way gen spans are displayed by modules *** sovrascritto il testo esistente ***)
local j = {}
 
local txt = require('Modulo:Wikilib/strings') -- luacheck: no unused
local tab = require('Modulo:Wikilib/tables') -- luacheck: no unused
local l = require('Modulo:Links')
local abillib = require('Modulo:Wikilib/abils')
local oop = require('Modulo:Wikilib/oop')
local multigen = require('Modulo:Wikilib/multigen')
local list = require('Modulo:Wikilib/lists')
local txtabils = requiremw.loadData('Modulo:WikilibPokéAbil/stringsdata') -- luacheck: no unused
local tab = require('Modulo:Wikilib/tables') -- luacheck: no unused
local abils = require('Modulo:PokéAbil/data')
 
-- Table holding (Pikachu) forms to be ignored
local ignorableForms = {'pikachuR', 'pikachuD', 'pikachuCn', 'pikachuS',
'pikachuW', 'pikachuCm', 'eeveeCm'}
 
--[[
--]]
local AbilsBox = oop.makeClass(list.Labelled)
 
--[[
 
Static fields and methods
 
--]]
AbilsBox.STRINGS = {
singleAbilBox = '<div class="width-xl-33 width-xs-50" style="padding: 0.2em;">${abil}<div class="small-text">${desc}</div></div>',
singleAbilNoLabel = '<div class="width-xl-33 width-xs-50" style="padding: 0.2em;">${abil}</div>',
formAbilsBox = '<div>${forms}</div><div class="flex flex-row flex-wrap flex-items-end flex-main-stretch" style="padding: 0.2em;">${abils}</div>',
formLabel = "<div class=\"width-xl-100\" style=\"padding-bottom: 0.2em;\">'''${label}'''</div>",
LABELS = {
ability1 = "Prima abilit&agrave;",
ability2 = "Seconda abilit&agrave;",
abilityd = "Abilit&agrave; speciale",
abilitye = "Abilit&agrave; evento",
},
}
 
-- Table holding forms to be ignored
AbilsBox.ignorableForms = {
'pikachuR', 'pikachuD', 'pikachuCn', 'pikachuS', 'pikachuW',
'pikachuCm', 'eeveeCm',
}
 
--[[
--]]
AbilsBox.new = function(name, formName)
 
-- Pokémon whose ability is yet unknown
if abils[name].ability1 == '' then
end
 
-- Ignored forms
-- Pikachu (@Stygian visto che questo Pokémon fa danni?) e EeveeCm
if table.search(AbilsBox.ignorableForms, name) then
return nil
end
local this = AbilsBox.super.new(formName)
 
this.abils = table.merge(abillib.lastAbils(abils[name]), this)
 
return setmetatable(this, AbilsBox)
 
AbilsBox.__eq = function(a, b)
return table.equal(a.ability1 ==abils, b.ability1abils)
end
and a.ability2 == b.ability2
 
and a.abilityd == b.abilityd
-- Prints a single ability. If it's "Nessuna", it returns a "-" without link
and a.abilitye == b.abilitye
local toStringAbil = function(abil)
if abil == "Nessuna" then
return "&mdash;"
end
return l.aColor(abil)
end
 
--[[
 
Get the function to print a single ability.
 
--]]
AbilsBox.getAbilityPrinter = function(this)
local str = table.getn(this.abils) == 1
and AbilsBox.STRINGS.singleAbilNoLabel
or AbilsBox.STRINGS.singleAbilBox
return function(ability, key)
return string.interp(str, {
abil = multigen.printSpans(multigen.getGenSpan(ability), toStringAbil),
desc = AbilsBox.STRINGS.LABELS[key],
})
end
end
 
--]]
AbilsBox.__tostring = function(this)
local stdAbilsabilBoxes = ltable.aColormap(this.ability1abils, this:getAbilityPrinter())
if this.ability2 then
stdAbils = table.concat({stdAbils, 'o',
l.aColor(this.ability2)}, ' ')
end
 
local hiddenAbiltemp = ''{}
-- Inserting ensures to avoid holes for concat
if this.abilityd then
table.insert(temp, abilBoxes.ability1)
hiddenAbil = table.concat{'<div class="width-xl-50">',
table.insert(temp, abilBoxes.ability2)
l.aColor(this.abilityd), '<div class="small-text">Abilit&agrave; speciale</div></div>'}
table.insert(temp, abilBoxes.abilityd)
end
table.insert(temp, abilBoxes.abilitye)
local abilstring = table.concat(temp)
 
local eventAbilforms = ''#this.labels < 1
and ''
if this.abilitye then
or string.interp(AbilsBox.STRINGS.formLabel, {
eventAbil = string.interp('<div class="width-xl-${width}">${abil}<div class="small-text">Abilit&agrave; evento</div></div>',
{ label = mw.text.listToText(this.labels, ', ', ' e '),
width = this.abilityd and '100' or '50',})
abil = l.aColor(this.abilitye)
})
end
 
return string.interp(AbilsBox.STRINGS.formAbilsBox, {
return string.interp('<div class="flex flex-row flex-wrap flex-main-stretch flex-items-center width-xl-100" style="padding: 0.2em;">${forms}<div class="width-xl-${stdWidth}">${stdAbils}</div>${hiddenAbil}${eventAbil}</div>',
abils = abilstring,
{
forms = forms,
stdWidth = (this.abilityd or this.abilitye) and '50' or '100',
forms = #this.labels < 1 and '' or table.concat{
'<div class="small-text width-xl-100" style="padding-bottom: 0.2em;">',
mw.text.listToText(this.labels, ', ', ' e '),
'</div>'
},
stdAbils = stdAbils,
hiddenAbil = hiddenAbil,
eventAbil = eventAbil
})
end
local printBoxes = function(boxes)
local acc = table.map(boxes, tostring)
table.insert(acc, 1, '<div class="roundy text-center" style="background: #FFF; padding: 0.2em;">')
table.insert(acc, '</div>')
return table.concat(acc)
end
79 547

contributi