Moduł:Tabela
Zobacz podstrony tego modułu.
|
local p={};
function p.Tabela(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local parametry_modul=require("Module:Parametry");
local tab_parametry={}
local styl=args["styl"];tab_parametry["styl"]="";
local klasa=args["klasa"];tab_parametry["klasa"]="";
local atrybuty=args["atrybuty"];tab_parametry["atrybuty"]="";
local kol=tonumber(args["liczba kolumn"]) or 1;
local liczba_kolumn=(kol>0)and kol or 0;
tab_parametry["liczba kolumn"]="^%d+$!";
local wier=tonumber(args["liczba wierszy"]) or 1;
local liczba_wierszy=(wier>0)and wier or 0;
tab_parametry["liczba wierszy"]="^%d+$!";
local str="\n{|"..(parametry_modul.CzyTak(styl)and " style=\""..styl.."\"" or "")
..(parametry_modul.CzyTak(klasa)and " class=\""..klasa.."\"" or "")
..(parametry_modul.CzyTak(atrybuty)and " "..atrybuty or "")
.."\n";
--
local styl_tytulu=args["styl tytułu"];local czy_styl_tytulu=parametry_modul.CzyTak(styl_tytulu);
local klasa_tytulu=args["klasa tytułu"];local czy_klasa_tytulu=parametry_modul.CzyTak(klasa_tytulu);
local opcje_tytulu=args["opcje tytułu"];local czy_opcje_tytulu=parametry_modul.CzyTak(opcje_tytulu);
local tytul=args["tytuł"];
if(tytul)then
str=str.."|+"..((czy_styl_tytulu) and(" style=\""..styl_tytulu.."\"") or "")..((czy_klasa_tytulu)and(" class=\""..klasa_tytulu.."\"") or "")..((czy_opcje_tytulu) and (" "..opcje_tytulu) or "")..(((czy_styl_tytulu)or(czy_klasa_tytulu)or(czy_opcje_tytulu)) and " | " or " ")..(tytul and (mw.ustring.match(tytul,"^{|") or mw.ustring.match(tytul,"^[%*#:;]")) and ("\n"..tytul) or tytul).."\n";
if(tytul)then
tab_parametry["styl tytułu"]="";tab_parametry["klasa tytułu"]="";tab_parametry["opcje tytułu"]="";
end;
tab_parametry["tytuł"]="";
end;
---
local czy_naglowki=false;
for i=1,liczba_kolumn,1 do if(args["nagłówek "..i])then czy_naglowki=true;break;end;end;
if(czy_naglowki)then
local styl_naglowka=args["styl nagłówka"];tab_parametry["styl nagłówka"]="";
local klasa_naglowka=args["klasa nagłówka"];tab_parametry["klasa nagłówka"]="";
str=str.."|-"..(parametry_modul.CzyTak(styl_naglowka)and " style=\""..styl_naglowka.."\"" or "")
..(parametry_modul.CzyTak(klasa_naglowka)and " class=\""..klasa_naglowka.."\"" or "")
.."\n";
local function ColSpanNaglowka(tabnaglowka,numer_kolumny)
for k=1,#tabnaglowka,1 do
local tabnaglowka2=tabnaglowka[k];
if(tabnaglowka2[1]<=numer_kolumny)and(tabnaglowka2[2]>=numer_kolumny)then
return true;
end;
end;
return false;
end;
local tabnaglowka={};
for numer_kolumny=1,liczba_kolumn,1 do
local wynik=ColSpanNaglowka(tabnaglowka,numer_kolumny);
if(not wynik)then
local opcje=args["opcje "..numer_kolumny];
tab_parametry["opcje "..numer_kolumny]="";
local colspan2=opcje and mw.ustring.match(opcje,"colspan%s*=%s*\"%s*(%d+)%s*\"") or nil;
colspan=colspan2 or args["kolumny "..numer_kolumny];
local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil;
local naglowek=args["nagłówek "..numer_kolumny];
tab_parametry["kolumny "..numer_kolumny]="^%d+$?";
local col=colspan and tonumber(colspan) or 1;
colspan=(col>1) and col or 1;
if(colspan>1)then
table.insert(tabnaglowka,{numer_kolumny,numer_kolumny+colspan-1})
end;
local czy_opcje=parametry_modul.CzyTak(args["opcje "..numer_kolumny]);
local czy_styl=parametry_modul.CzyTak(args["styl "..numer_kolumny]);
local czy_klasa=parametry_modul.CzyTak(args["klasa "..numer_kolumny]);
str=str.."!"
..(czy_opcje and " "..args["opcje "..numer_kolumny] or "")
..(czy_styl and " style=\""..args["styl "..numer_kolumny].."\"" or "")
..(czy_klasa and " class=\""..args["klasa "..numer_kolumny].."\"" or "")
..((kolumny and not colspan2) and " colspan=\""..kolumny.."\"" or "")
..((czy_opcje or czy_styl or czy_klasa or kolumny) and " | " or " ")
..((naglowek and (mw.ustring.match(naglowek,"^{|") or mw.ustring.match(naglowek,"^[%*#:;]")) and ("\n"..naglowek) or naglowek)
or "{{{nagłówek "..numer_kolumny.."}}}").."\n";
tab_parametry["styl "..numer_kolumny]="";
tab_parametry["klasa "..numer_kolumny]="";
tab_parametry["opcje "..numer_kolumny]="";
tab_parametry["nagłówek "..numer_kolumny]="!";
end;
end;
end;
local function ColAndRowSpan(tab,numer_wiersza,numer_kolumny)
for k=1,#tab,1 do
local tab2=tab[k];
if(tab2[1]<=numer_wiersza)and(tab2[2]<=numer_kolumny)and(tab2[3]>=numer_wiersza)and(tab2[4]>=numer_kolumny)then
return true;
end;
end;
return false;
end;
local tab={};
for numer_wiersza=1,liczba_wierszy,1 do
local str2=""
for numer_kolumny=1,liczba_kolumn,1 do
local czypominac=ColAndRowSpan(tab,numer_wiersza,numer_kolumny);
if(not czypominac)then
local opcje=args["opcje "..numer_wiersza.."_"..numer_kolumny];
tab_parametry["opcje "..numer_wiersza.."_"..numer_kolumny]="";
local colspan2=opcje and mw.ustring.match(opcje,"colspan%s*=%s*\"%s*(%d+)%s*\"") or nil
local colspan=colspan2 or args["kolumny "..numer_wiersza.."_"..numer_kolumny];
kolumny=parametry_modul.CzyTak(colspan) and colspan or nil;
---
local rowspan2=opcje and mw.ustring.match(opcje,"rowspan%s*=%s*\"%s*(%d+)%s*\"") or nil;
local rowspan=rowspan2 or args["wiersze "..numer_wiersza.."_"..numer_kolumny];
wiersze=parametry_modul.CzyTak(rowspan) and rowspan or nil;
----
if(not colspan2)then tab_parametry["kolumny "..numer_wiersza.."_"..numer_kolumny]="^%d+$?";end;
if(not rowspan2)then tab_parametry["wiersze "..numer_wiersza.."_"..numer_kolumny]="^%d+$?";end;
if((not wiersze)and(not kolumny))then
local scal=args["scal "..numer_wiersza.."_"..numer_kolumny];
if(parametry_modul.CzyTak(scal))then
wiersze,kolumny=mw.ustring.match(scal,"^(%d+)%s+(%d+)$");
end;
tab_parametry["scal "..numer_wiersza.."_"..numer_kolumny]="^%d+%s+%d+$?";
end;
local col=kolumny and tonumber(kolumny) or 1;
local row=wiersze and tonumber(wiersze) or 1;
colspan=(col>1)and col or 1;
rowspan=(row>1) and row or 1;
if(((colspan>1)and(rowspan>1))or((colspan>1)and(rowspan==1))or((colspan==1)and(rowspan>1)))then
table.insert(tab,{numer_wiersza,numer_kolumny,numer_wiersza+rowspan-1,numer_kolumny+colspan-1})
end;
opcje=parametry_modul.CzyTak(opcje)and opcje or nil;
local komorka=args["komórka "..numer_wiersza.."_"..numer_kolumny];
tab_parametry["komórka "..numer_wiersza.."_"..numer_kolumny]="!";
tab_parametry["nagłówek "..numer_wiersza.."_"..numer_kolumny]="";
local kreska_pionowa_czy_wykrzyknik;
if(parametry_modul.CzyTak(args["nagłówek "..numer_wiersza.."_"..numer_kolumny]))then
kreska_pionowa_czy_wykrzyknik="!";
else
kreska_pionowa_czy_wykrzyknik="|";
end;
local styl_komorki=args["styl "..numer_wiersza.."_"..numer_kolumny];
local klasa_komorki=args["klasa "..numer_wiersza.."_"..numer_kolumny];
tab_parametry["styl "..numer_wiersza.."_"..numer_kolumny]=""
tab_parametry["klasa "..numer_wiersza.."_"..numer_kolumny]="";
czy_opcje=parametry_modul.CzyTak(opcje);
czy_styl_komorki=parametry_modul.CzyTak(styl_komorki);
czy_klasa_komorki=parametry_modul.CzyTak(klasa_komorki);
str2=str2..kreska_pionowa_czy_wykrzyknik
..((czy_opcje) and " "..opcje or "")
..((czy_styl_komorki) and " style=\""..styl_komorki.."\"" or "")
..((czy_klasa_komorki) and " class=\""..klasa_komorki.."\"" or "")
..((not rowspan2 and wiersze) and " rowspan=\""..wiersze.."\"" or "")
..((not colspan2 and kolumny) and " colspan=\""..kolumny.."\"" or "")
..((czy_opcje or czy_styl_komorki or czy_klasa_komorki or wiersze or kolumny) and " | " or " ")
..((komorka and (mw.ustring.match(komorka,"^{|") or mw.ustring.match(komorka,"^[%*#:;]")) and ("\n"..komorka) or komorka)
or "{{{komórka "..numer_wiersza.."_"..numer_kolumny.."}}}")
.."\n";
end;
end;
local czy_puste=(str2=="");
if(not czy_puste)then
local opcje_wiersza=args["opcje wiersza "..numer_wiersza];
local styl_wiersza=args["styl wiersza "..numer_wiersza];
local klasa_wiersza=args["klasa wiersza "..numer_wiersza];
tab_parametry["opcje wiersza "..numer_wiersza]="";
tab_parametry["styl wiersza "..numer_wiersza]="";
tab_parametry["klasa wiersza "..numer_wiersza]="";
local czy_opcje=parametry_modul.CzyTak(opcje_wiersza);
local czy_styl=parametry_modul.CzyTak(styl_wiersza);
local czy_klasa=parametry_modul.CzyTak(klasa_wiersza);
str=str.."|-"..(czy_opcje and " "..opcje_wiersza or "")
..(czy_styl and " style=\""..styl_wiersza.."\"" or "")
..(czy_klasa and " class=\""..klasa_wiersza.."\"" or "")
.."\n"
..str2;
else
str=str.."|-\n";
end;
end;
local sprawdz_modul=require("Module:Sprawdź");
tab_parametry[""]="problemy-w-szablonie-%s {{Kategoria|Szablon %s do sprawdzenia}}";
local frame2=frame:getParent():newChild{args=tab_parametry,}
local fun_parametry=sprawdz_modul.Parametry(frame2) or "";
return str.."|}\n"..fun_parametry;
end;
return p;