Modulo:Tab

Da Wikisource.
Jump to navigation Jump to search

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[modifica]

zona 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