Modulo:Tab
Idea
modifica- step 1
- passare a Template:Tab il copiaincollato da excel come parametro 1 e ottenere una tabella html Fatto
- step 2
- passare a Template:Tab una serie di istruzioni di formattazione per la tabella, per le colonne, per le righe o per le celle
Codice di prova
modificazona | maschi | femmine | totale |
centralina CT1 | 2 | 2 | 4 |
parco lamiere | 1 | 3 | 4 |
lato via Bonavia | 1 | 3 | 4 |
nuovi spogliatoi | 5 | 13 | 18 |
zona mensa | 4 | 2 | 6 |
riva D | 5 | 6 | 11 |
riva Trieste | 4 | 10 | 14 |
zona pista 1 | 1 | 2 | 3 |
zona pista 2 | 4 | 6 | 10 |
zona pista 3 | 4 | 12 | 16 |
totale | 31 | 59 | 90 |
righe:12 colonne:4 style="border:3px solid black;text-align:right;" class="cellborderr"
-- test costruzione tabella - passo 1: test restituzione codice con caratteri tab
-- problema serio:prima dell'invio dei parametri il template esegue un trim eliminando tutti i caratteri \s in testa e in coda
-- e quindi distruggendo tutto il contenuto di una tabella fino a trovare una cella "piena".
-- Unica soluzione sarebbe assicurarsi che la prima cella in alto a sinistra e l'ultima in basso a destra abbiano sempre un
-- contenuto ma la cosa diventa macchinosa, soprattutto nel caso della tabella di formato.
-- ci provo comunque per esercizio : il carattere "nulla" è un trattino.
local p = {}
function p.tabella(frame)
frame=frame:getParent(frame)
local codice=""
local tabellah=0
local tabellaw=0
local tabella={}
local tabellaf={}
local tabellaStile=""
-- se il secondo parametro manca e manca o è vuoto anche il primo parametro ritorna;
if (frame.args["1"]==nil or frame.args[1]=="") then
return codice
end
tabella=frame.args[1]:match "^%s*(.-)%s*$"
tabella=mw.text.split(tabella,"\n")
-- parsing della tabella valori
for i,v in ipairs(tabella) do
tabella[i]=mw.text.split(tabella[i],"\t")
end
-- provo a memorizzare le dimensioni
tabellah=table.getn(tabella)
tabellaw=table.getn(tabella[1])
-- creo una copia della tabella foriper i formati costituita da stringhe vuote
for i=1,tabellah do
tabellaf[i]={}
for j=1,tabellaw do
tabellaf[i][j]=""
end
end
-- parsing dell'eventuale lista di assegnazioni
if (frame.args["2"]~=nil) then
formati=frame.args["2"]:match "^%s*(.-)%s*$"
end
if (formati) then tabellaStile=formati:match "table:(.-)\n" end
codice=""
-- converto le celle valori in tag td: qui inserire eventuali valori di stile per le celle
for i,v in ipairs(tabella) do
for j,w in ipairs(tabella[i]) do
tabella[i][j]="<td>"..tabella[i][j].."</td>\n"
end
end
-- converto le righe in tag tr: qui inserire eventuali valori di stile per le righe
for i,v in ipairs(tabella) do
tabella[i]="<tr>"..table.concat(tabella[i]).."</tr>\n"
end
-- qui inserire eventuali valori di stile per la tabella
codice="<table"
if (tabellaStile) then codice=codice.." "..tabellaStile end
codice=codice..">"..table.concat(tabella).."</table>"
codice=codice.."<br/>righe:"..tabellah.." colonne:"..tabellaw.." "..tabellaStile
-- qui elaborazione di codice
-- codice=string.gsub(codice,"\t","||")
-- codice=string.gsub(codice,"\n","<br/>")
return codice
end
return p