forked from pokemoncentral/wiki-lua-modules
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPokémonInfo-BoxTipi.lua
108 lines (82 loc) · 2.54 KB
/
PokémonInfo-BoxTipi.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
-- Box dei tipi per il PokémonInfo
local b = {}
local mw = require('mw')
local l = require('Links')
local w = require('Wikilib')
local oop = require('Wikilib-oop')
local list = require('Wikilib-lists')
local txt = require('Wikilib-strings')
local multigen = require('Wikilib-multigen')
local c = require("Colore-data")
local pokes = require("Poké-data")
--[[
Questa classe rappresenta una casella
del box dei tipi del PokémonInfo,
mantenendo informazioni sui tipi e
sulle forme che li hanno.
--]]
local TypesBox = oop.makeClass(list.Labelled)
--[[
Costruttore della classe: ha in ingresso il
nome del Pokémon, nella forma nome/ndex + sigla,
e, opzionalmente, il nome esteso della forma
--]]
TypesBox.new = function(name, formName)
local this = setmetatable(TypesBox.super.new(formName),
TypesBox)
local pokeData = multigen.getGen(pokes[name])
this.type1, this.type2 = pokeData.type1, pokeData.type2
return this
end
TypesBox.__eq = function(a, b)
return a.type1 == b.type1 and a.type2 == b.type2
end
--[[
Wikicode per una cella del box dei tipi:
i tipi sono su fondo colorato e le forme
sotto in piccolo.
--]]
TypesBox.__tostring = function(this)
return string.interp('<div class="width-xl-50 text-center" style="box-sizing: border-box; padding: 0.2em;" >${type1}${type2}${forms}</div>',
{
type1 = l.typeColor(this.type1),
type2 = this.type1 == this.type2 and '' or l.typeColor(this.type2),
forms = #this.labels < 1 and '' or table.concat{
'<div class="small-text">',
mw.text.listToText(this.labels, ', ', ' e '),
'</div>'
}
})
end
--[[
Stampa in HTML una table di Boxes,
raggruppati in due per riga
--]]
local printBoxes = function(boxes)
local acc = table.map(boxes, tostring)
table.insert(acc, 1, '<div class="roundy white-bg flex flex-row flex-wrap flex-main-stretch flex-items-center" style="padding: 0.2em;">')
table.insert(acc, '</div>')
return table.concat(acc)
end
--[[
Dato il nome di un Pokémon o il suo ndex,
ritorna il box dei tipi, con una cella
per ogni diversa combinazione di tipi
delle forme alternative, con sotto i nomi
delle forme che li hanno
--]]
b.boxTipi = function(frame)
local name = string.trim(frame.args[1] or ''):lower()
local pokeData = pokes[string.parseInt(name) or name]
or pokes[mw.text.decode(name)]
pokeData = multigen.getGen(pokeData)
name = pokeData.name:lower()
return list.makeFormsLabelledBoxes({
name = name,
makeBox = TypesBox.new,
printBoxes = printBoxes
})
end
b.BoxTipi, b.box_tipi, b.Box_tipi = b.boxTipi, b.boxTipi, b.boxTipi
-- print(b.boxTipi{args={arg[1]}})
return b