Moduł:Techniczne
Wygląd
|
Zobacz podstrony tego modułu.
|
local p={};
p["Pierwszy niepusty"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local i=1;
local liczba_elementow_w_tablicy_args=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](args,"test");
local licznik=1;
while true do
local test=args["test"..i];
local _i=args[i];
local zmienna=test or _i;
local czy_tak=parametry_modul.CzyTak(zmienna);
if(czy_tak)then
return (_i)and _i or "{{{"..i.."}}}";
end;
if(licznik>=liczba_elementow_w_tablicy_args)then return;end;
if(zmienna)then licznik=licznik+1;end;
i=i+1;
end;
end;
function p.NowikiParametr(frame)
local parametr=frame.args[1];
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
parametr=mw.ustring.gsub(parametr,"(.)",function(s)
return techniczne_dane_modul.tablica_szablonowa[s] or techniczne_dane_modul.tablica_linki[s] or techniczne_dane_modul.tablica_tagowa[s];
end);
return parametr;
end;
function p.EncodeParametr(frame)
local parametr=frame.args[1];
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
parametr=mw.ustring.gsub(parametr,"(\")([^\"]+)(\")",function(a,str,b)
return a..mw.text.encode(str)..b;
end)
parametr=mw.ustring.gsub(parametr,"<(/?)([^<>]+)>",function(znak,str)
local znacznik=mw.ustring.match(str,"^(%a+)$") or mw.ustring.match(str,"^(%a+)%s+");
if(znacznik)then
znacznik=mw.getContentLanguage():lc(znacznik);
local czy_znacznik=szablonowe_dane_modul.tablica_html_mechanizmu_mediawiki[znacznik];
if(not czy_znacznik)then
return "&lt;"..znak..mw.text.encode(str).."&gt;";
end;
end;
end);
parametr=mw.text.decode(parametr);
parametr=mw.text.encode(parametr);
return parametr;
end;
p["PełnaNazwaOpisuModułu"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local pelna_nazwa_strony=PobierzParametr(1) or PobierzParametr("nazwa");
local komunikat = mw.message.new('Scribunto-doc-page-name', '$1');
local zawartosc_komunikatu;
if(komunikat:exists())then
zawartosc_komunikatu=komunikat:plain();
zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu);
else
zawartosc_komunikatu="Module:$1/opis";
end;
local nazwy_modul=require("Module:Nazwy");
local pelna_nazwa_strony_wedlug_strony_komunikatu=nazwy_modul["PEŁNANAZWASTRONY"](zawartosc_komunikatu);
local pelna_nazwa_strony_podanej_lub_aktualnej=pelna_nazwa_strony and nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony) or nazwy_modul["PEŁNANAZWASTRONY"]();
local wzor_pelnej_nazwy_strony=mw.ustring.gsub(pelna_nazwa_strony_wedlug_strony_komunikatu,"%$1",".-");
if(not mw.ustring.match(pelna_nazwa_strony_podanej_lub_aktualnej,"^"..wzor_pelnej_nazwy_strony.."$"))then
local nazwa_strony=nazwy_modul["NAZWASTRONY"](pelna_nazwa_strony_podanej_lub_aktualnej);
local przetworzona_nazwa_strony=p["TekstBezOdwołańDoParametrówWeWzorze"](nazwa_strony);
local pelna_nazwa_strony_opisu, _=mw.ustring.gsub(zawartosc_komunikatu,"%$1",przetworzona_nazwa_strony)
local pelna_strona_opisu=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_opisu);
return pelna_strona_opisu;
else
return pelna_nazwa_strony_podanej_lub_aktualnej;
end;
end;
p["CzyIstniejeDanaPrzestrzeńNazw"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_przestrzeni_nazw_lub_jego_identyfikator=PobierzParametr(1) or PobierzParametr("nazwa");
local klucz_projektu=PobierzParametr("klucz projektu");
local kod_jezyka=PobierzParametr("kod języka");
local kod_projektu=PobierzParametr("kod projektu");
local wiki_modul=require("Module:Wiki");
local czy_biezace_wiki=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
local nazwy_modul=require("Module:Nazwy");
local uchwyt_przestrzeni_nazw;
if(czy_biezace_wiki)then
uchwyt_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,uchwyt="tak",};
else
uchwyt_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,uchwyt="tak",};
end;
if(uchwyt_przestrzeni_nazw)then
return "tak";
else
return;
end;
end;
p["WzórDanejPrzestrzeniNazw"] = function (frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local wzor, _ = mw.ustring.gsub(nazwa,"(.)",function (s) return ((mw.ustring.match(s,"^%a$"))and("["..mw.ustring.upper(s)..mw.ustring.lower(s).."]")or s);end )
wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+");
wzor="[%s_]*"..wzor.."[%s_]*";
return wzor;
end;
p["WzórNazwyStrony"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local strona=PobierzParametr(1) or PobierzParametr("nazwa");
local wzor,_=mw.ustring.gsub(strona,"([%[%]%(%)%+%-%*%?%.%^%$%%'])","%%%1");
wzor,_=mw.ustring.gsub(wzor,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+");
wzor="[%s_]*"..wzor.."[%s_]*";
return wzor;
end;
p["WzórPełnejNazwyStrony"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local strona=PobierzParametr(1) or PobierzParametr("nazwa");
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
local nazwa_strony=nazwy_modul["NAZWASTRONY"](strona);
if(nazwa_przestrzeni~="")then
nazwa_przestrzeni=p["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni);
end;
nazwa_strony=p["WzórNazwyStrony"](nazwa_strony);
return ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_strony;
end;
p["TekstBezOdwołańDoParametrówWeWzorze"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"%%%%","%%%%%%");
tekst=mw.ustring.gsub(tekst,"%%(%d+)","%%%%%1");
return tekst;
end;
p["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"%%(%a+)","%%%%%1");
return tekst;
end;
p["PrzekształćWzórDoCzystegoTekstu"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
return tekst;
end;
function p.PoliczZbiory(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local liczba_istniejacych_zbiorow=0;
local tabela_uchwytow_stron={};
for _,nazwa_strony in ipairs(args) do
local uchwyt_strony = mw.title.makeTitle('',nazwa_strony);
local tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil;
local czy_istnieje=tekst_artykulu and tekst_artykulu or (uchwyt_strony and uchwyt_strony.exists or nil);
tabela_uchwytow_stron[#tabela_uchwytow_stron+1]={uchwyt_strony,tekst_artykulu,};
if(czy_istnieje)then
liczba_istniejacych_zbiorow=liczba_istniejacych_zbiorow+1;
end;
end;
return liczba_istniejacych_zbiorow,tabela_uchwytow_stron;
end;
function p.TransformacjaWzoru(ciag)
return mw.ustring.gsub(ciag,"[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1");
end;
p["WyświetlajKodySpecjalne"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
local html_modul=require("Module:Html");
local i=html_modul.KodHTMLZnaku("&");
local hash=html_modul.KodHTMLZnaku("#");
local sr=html_modul.KodHTMLZnaku(";");
text=mw.ustring.gsub(text,"&#(%d+);",i..hash.."%1"..sr);
text=mw.ustring.gsub(text,"&(%a+);",i.."%1"..sr);
return text;
end;
function p.Wikikod(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1);
local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template";
local nazwa_modulu=((parametry_modul["CzyTakCiąg"](przestrzen)) and (przestrzen..":") or "")..(nazwa or "Przykłowa strona");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local szablonowe_modul=require("Module:Szablonowe");
local tab_komentarze={};
local licznik_komentarze=1;
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,nazwa_modulu,nil,false,nil,true,nil,nil,nil,nil,function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nie ma takiej strony lub artykulu."}};
end;
tekst=p["TekstBezOdwołańDoParametrówWeWzorze"](tekst);
local html_modul=require("Module:Html");
tekst=mw.ustring.gsub(tekst,"&(%a+);","&%1;");
tekst=mw.ustring.gsub(tekst,"&#(%d+);","&#%1;");
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
local tab_szablonowa=techniczne_dane_modul.tablica_szablonowa;
local tab_linki=techniczne_dane_modul.tablica_linki;
local tab_tagow=techniczne_dane_modul.tablica_tagowa;
local tabela_wikitabelowa=techniczne_dane_modul.tabela_wikitabelowa;
local tab_zmienne=function(s)
return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s];
end;
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe")
local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local TekstBezKomentarzy=function(tekst,poczatek)
tekst=mw.ustring.gsub(tekst,(poczatek or "")..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE"),function(kod)
local kod=tonumber(kod);
local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod];
if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then
return "";
end;
return nil;
end);
--tekst=parametry_modul["Odstępy"](tekst);
return tekst;
end;
local UsuwanieModyfikatoroweStron=function(nazwa,tabela_modyfikatorow)
if(not tabela_modyfikatorow)then return nazwa,"";end;
--local nazwa,komentarz=TekstBezKomentarzy(nazwa,"^[%s_]*");
local modyfikatory="";
repeat
local ile_zmieniono=0;
local __modyfikatory=nil;
nazwa=mw.ustring.gsub(nazwa,"^([%s_]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE")..")",function(poczatek,kod)
local kod=tonumber(kod);
local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod];
if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then
__modyfikatory=poczatek;
return "";
end;
end);
nazwa=mw.ustring.gsub(nazwa,"^(([%s_]*)(#?)([%s_]*)([^%s#:_]+)([%s_]*:))",function(calosc,a,b,c,d,e)
d=b..TekstBezKomentarzy(d)..":";
if(tabela_modyfikatorow[d])then
ile_zmieniono=ile_zmieniono+1;
modyfikatory=modyfikatory..(__modyfikatory or "")..calosc;
return "";
end;
return nil;
end);
if(ile_zmieniono==0)then
nazwa=(__modyfikatory or "")..nazwa;
end;
until (ile_zmieniono==0);
return nazwa,modyfikatory;
end;
local ZamieniajZnakiNaMikroSzablony=function(szablon,__funkcja)
szablon=mw.ustring.gsub(szablon,"(.)",function(znak)
local odpowied;
if(__funkcja)then
odpowied=__funkcja(znak);
else
odpowied=tab_linki[znak] or tab_szablonowa[znak];
end;
if(odpowied)then return odpowied;end;
return znak;
end);
return szablon;
end;
local CzyBezDwukropka=function(dwukropki)
return (not mw.ustring.match(dwukropki,":") and "tak" or "");
end;
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local szablon_old=szablon;
szablon=TekstBezKomentarzy(szablon);
local pseudoszablon,tabela_modyfikatorow=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
if((pseudoszablon)and(((tabela_modyfikatorow)and((szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))
or(tabela_modyfikatorow["#invoke:"])
or(tabela_modyfikatorow["int:"]))
and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
or((not tabela_modyfikatorow)and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
))then
local UstawianieLinkowe=function(szablon,ktore)
local SzablonStrona=function(szablon)
local strona=TekstBezKomentarzy(szablon);
strona=parametry_modul["Odstępy"](strona);
local nazwa,modyfikatory=UsuwanieModyfikatoroweStron(szablon,tabela_modyfikatorow);
return "{{s|oryginalna=tak|analiza=tak|"..strona
.."|nazwa="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..nazwa..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)
.."|modyfikatory="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..modyfikatory..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)
..(ktore and "|" or "}}");
end;
if(ktore)then
szablon=mw.ustring.gsub(szablon,"=","{{=}}");
szablon,ile=mw.ustring.gsub(szablon,"^{{([^|]-)|",function(szablon)
return SzablonStrona(szablon);
end);
else
szablon=mw.ustring.gsub(szablon,"^{{([^|]-)}}",function(szablon)
return SzablonStrona(szablon);
end);
end;
return szablon;
end;
if(mw.ustring.match(szablon_old,"|"))then
if(mw.ustring.match(szablon,"^{{[^|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."[^|]*|"))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
else
return UstawianieLinkowe(szablon_old,true);
end;
else
if(mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
end;
if(pseudoszablon)then
if(((not tabela_modyfikatorow)or((not tabela_modyfikatorow["int:"])and(not tabela_modyfikatorow["#invoke:"])))and(tab_zmienne(pseudoszablon)))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
else
return UstawianieLinkowe(szablon_old,false);
end;
else
return UstawianieLinkowe(szablon_old,false);
end;
end;
else
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
end;
elseif(obiekt=="LINKW")then
local __szablon=TekstBezKomentarzy(szablon);
local __dwukropki,__strona=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)%]%]$");
if(__strona)then
if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)%]%]$");
return "{{l|"..strona.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}"
end;
else
local __dwukropki,__strona,__nazwa=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)|(.*)%]%]$");
if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)|(.*)%]%]$");
return "{{l|"..strona.."|"..nazwa.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}";
end;
end;
elseif(obiekt=="LINKZ")then
local __szablon=TekstBezKomentarzy(szablon);
local __strona=mw.ustring.match(__szablon,"^%[%s*(%S+)%s*%]$");
if(__strona)then
if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s*)%]$");
return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}";
end;
else
local __strona,__nazwa=mw.ustring.match(__szablon,"^%[(%s*%S+)(%s+.-)%]$");
if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s+.-)%]$");
return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}";
end;
end;
elseif(obiekt=="ZMIENNA")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_szablonowa[znak];
return odpowied;
end);
return szablon;
elseif((obiekt=="NOWIKI")
or(obiekt=="PRE")
or(obiekt=="MATH")
or(obiekt=="ŹRÓDŁO")
or(obiekt=="GALERIA")
or(obiekt=="MAPAOBRAZU")
or(obiekt=="PUDEŁKOWEJŚCIA")
)then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_linki[znak] or tab_szablonowa[znak] or tab_tagow[znak];
return odpowied;
end);
return szablon;
elseif(obiekt=="QUIZ")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_szablonowa[znak] or tab_tagow[znak];
return odpowied;
end);
return szablon;
elseif((obiekt=="ZNACZNIK")or(obiekt=="INCLUDE"))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=(znak~="\"")and tab_tagow[znak] or nil;
return odpowied;
end);
return szablon;
elseif(obiekt=="ATRYBUTY")then
szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("(UCIECZKI)"),function(obiekt,kod)
kod=tonumber(kod);
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end);
return szablon;
elseif(obiekt=="WIKITABELA")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tabela_wikitabelowa[znak];
return odpowied;
end);
return szablon;
elseif(obiekt=="INNEPRE")then
--szablon=mw.ustring.gsub(szablon,"^[^%S\n]","&nbsp;");
return szablon;
else
return szablon;
end;
end);
tekst=frame:getParent():preprocess(tekst);
tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ"),function(kod)
kod=tonumber(kod);
local komentarz=tab_komentarze[kod];
komentarz=mw.ustring.gsub(komentarz,"^<!%-%-(.-)%-%->$",function(zawartosc)
return "<!--"..zawartosc.."-->";
end);
return komentarz;
end);
return tekst;
end;
p["WikikodStrony"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1);
local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template";
if(not parametry_modul.CzyTak(nazwa))then return;end;
local title=mw.title.makeTitle(przestrzen,nazwa);
local text=title and title:getContent() or false;
if(not text)then return;end;
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
return text;
end;
function p.LuaSubst(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local strona=args[1] or args["strona"];
if(not strona)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}};
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}};
end;
local inkludowany=parametry_modul.CzyTak(args["inkludowana"]);
if(inkludowany)then
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
else
local dokumentacja=parametry_modul.CzyTak(args["dokumentacja"]);
if(dokumentacja)then
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","%1");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","");
end;
end;
return tekst;
end;
p["LuaSurowySzablonSubst"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local strona=args["strona"];
if(not strona)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}};
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}};
end;
---
---
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,nil,nil,nil,
function(tekst_artykulu,tab_element)
return nil,true,nil,true;
end,
function(nazwa)
return true;
end);
local specjalne_modul=require("Module:Specjalne");
local tab_modyfikatory={["#if:"]=true,["#ifeq:"]=true,["#ifexist:"]=true,["#ifexpr:"]=true,};
local tab_mediawiki=function(s)
return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s];
end;
local tabela_zmiennych={["site"]=true;};
local tablica_danych_parametrow_szablonu_strony={};
local function UsuwanieZnacznikoweZmiennychNumerowanychElementowychAlternatywnych(szablon)
local ile=0;
local szablon=mw.ustring.gsub(szablon,"({{{.+}}})",function(zmienna)
local numerowana=mw.ustring.match(zmienna,"^{{{%s*(%d+)%s*|");
if(numerowana)then
local ile2=0;
zmienna=mw.ustring.gsub(zmienna,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
ile=ile+1;
ile2=ile2+1;
return a..c;
end;
end);
return (ile2>0)and zmienna or nil;
end;
end);
return szablon,ile;
end;
local function UsuwaniePseudoSzablonowe(szablon)
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(tab_mediawiki(nazwa_szablonu))then
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
end;
return nil, true;
end);
return szablon;
end;
local function PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(tabela_modyfikatorow)then
for name,value in pairs(tabela_modyfikatorow)do
if(tab_modyfikatory[name])then
local warunek,dalej=mw.ustring.match(szablon,"^{{([^{}|]+)(.-)$");
if(warunek)then
local iterator=szablonowe_modul.IteratorSzablonowyZakodowanegoTekstu(nil,dalej,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_usunac_kreski_pionowe=false;
for szablon_dalej,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon_dalej,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((mw.ustring.match(nazwa_szablonu,"^Infobox .*$")) or(mw.ustring.match(nazwa_szablonu,"^Link%u")))then
return true;
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then
czy_usunac_kreski_pionowe=true;
break;
end;
elseif(obiekt=="LINKW")then
local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon);
if(wynik)then
czy_usunac_kreski_pionowe=true;
break;
end;
end;
end;
if(czy_usunac_kreski_pionowe)then
warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
return szablon;
end;
end);
return "{{"..warunek..dalej;
else
local warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul);
return "{{"..warunek..dalej;
end;
end;
end;
end;
end;
end;
local function PlikowePrzetwarzanie(szablon,obiekt,kod)
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieDivowe(szablon,obiekt,kod)
local szablon,ile=UsuwanieZnacznikoweZmiennychNumerowanychElementowychAlternatywnych(szablon);
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
end;
return nil,true;
end);
return szablon;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
return wynik;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
return nil,true;
elseif(obiekt=="LINKW")then
if(specjalne_modul["CzyPlik"](szablon))then
szablon=PlikowePrzetwarzanie(szablon,obiekt,kod);
return szablon;
end;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieSzablonowe(szablon,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local infobox=mw.ustring.match(nazwa_szablonu,"^Infobox .*$");
local link=mw.ustring.match(nazwa_szablonu,"^Link%u");
if((infobox)or(link))then
if((link)and(not infobox))then
szablon="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>";
end;
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod ,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
if(wynik)then return wynik;end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
return nil,true;
elseif(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(((infobox)and(b==""))or((link)and((tonumber(a1))or(tabela_zmiennych[a1]))))then
return a..c;
end;
end);
return szablon;
elseif(obiekt=="LINKW")then
if(specjalne_modul["CzyPlik"](szablon))then
szablon=PlikowePrzetwarzanie(szablon,obiekt,kod);
return szablon;
end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
szablon=PrzetwarzanieDivowe(szablon,obiekt,kod);
return szablon;
end;
return nil,true;
end;
return szablon;
end);
return szablon;
end;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
if(wynik)then return wynik;end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
return wynik;
end;
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
szablon=PrzetwarzanieSzablonowe(szablon,obiekt,kod);
if(szablon)then return szablon;end;
elseif(obiekt=="ZMIENNA")then
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
return szablon;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
szablon=PrzetwarzanieDivowe(szablon,obiekt,kod);
return szablon;
end;
elseif(obiekt=="LINKW")then
if(specjalne_modul["CzyPlik"](szablon))then
szablon=PlikowePrzetwarzanie(szablon,obiekt,kod);
return szablon;
else
local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon);
if(wynik)then
local spanramka="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>";
return spanramka;
end;
end;
end;
return szablon;
end);
return tekst;
end;
function p.NowaLinia(frame)
return "\n";
end;
function p.Nowiki(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local PobierzParametr=parametry_modul.PobierzParametr(args);
local tekst=PobierzParametr("tekst") or PobierzParametr(1);
local sprawdz_modul=require("Module:Sprawdź");
tekst=sprawdz_modul["UsuńKategorięSprawdzaniaParametrówSzablonu"]{args={[1]=tekst,},}
tekst=mw.ustring.gsub(tekst,"([&<>={}|!%+%-%*;:#\"\'%[%]/\\])",function(znak)
return "&#"..mw.ustring.byte(znak)..";";
end);
return tekst;
end;
function p.FunkcjaLua(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local modul=require("Module:"..(args[1] or args["moduł"]));
if(modul)then
if(modul[asgs[2] or args["nazwa"] or args["funkcja"]])then
local args2=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,{[1]=true,["moduł"]=true,[2]=true,nazwa=true,funkcja=true,["wyspecjalizowana"]=true,})
return modul[args[2] or args["nazwa"] or args["funkcja"]](args2);
end;
end;
end;
p["RozwińSzablonWzględemPodanychParametrów"] = function (frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame)
local PobierzParametr=parametry_modul.PobierzParametr(args);
local nazwa=PobierzParametr("Nazwa strony") or PobierzParametr("Nazwa") or "Nazwa strony";
local przestrzen=PobierzParametr("Miano przestrzeni nazw") or PobierzParametr("Przestrzeń") or "Template";
local title=mw.title.makeTitle(przestrzen,nazwa);
local text=title and title:getContent() or nil;
if(not text)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Strona nie istnieje lub nie ma zawartości."}};
end;
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
local bezkluczy={
["Nazwa strony"]=true,
["Nazwa"]=true,
["Miano przestrzeni nazw"]=true,
["Przestrzeń"]=true,
["wyspecjalizowana"]=true,
["nie rozwiń"]=true,
};
local tab=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,bezkluczy);
local frame2=mw.getCurrentFrame():newChild{title=(parametry_modul.CzyTak(przestrzen)and (przestrzen..":"..nazwa) or nazwa),args=tab};
text=parametry_modul.CzyTak(frame.args["nie rozwiń"]) and text or frame2:preprocess(text);
return text;
end;
p["LiczbaBajtówCiąguDoNormy"] = function(frame)
local str=frame.args[1] or frame.args["ciąg"];
local ile=tonumber(frame.args[2] or frame.args["norma"]);
if(not ile)then return #str;end;
if(#str<=ile)then
return #str;
end;
return nil;
end;
p["LiczbaStronJakoPozycjeDanejKategorii"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local kategoria=parametry_modul.CzyTak(args["kategoria"]) and args["kategoria"] or "Category:Przykładowa kategoria";
local kat={
["subcats"]=true,
["files"]=true,
["pages"]=true,
}
local typ=args["typ"];
typ=(typ and kat[args["typ"]]) and args["typ"] or "all";
local nazwy_modul=require("Module:Nazwy");
kategoria=nazwy_modul["NAZWASTRONY"](kategoria);
return mw.site.stats.pagesInCategory(kategoria,typ);
end;
p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"] = function(frame,tablica_danych_parametrow_szablonu_strony,kod)
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony;
end;
end;
end;
---
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local adres_wzgledny=PobierzParametr(1) or PobierzParametr("względny");
if(not mw.ustring.match(adres_wzgledny,"/"))then return adres_wzgledny;end;
local adres_biezacy=PobierzParametr(2) or PobierzParametr("bieżący");
local adres;
local dwukropek;
if(mw.ustring.match(adres_wzgledny,"^[%s_]*/"))then
if(adres_biezacy)then
adres_biezacy,dwukropek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
adres=adres_biezacy..adres_wzgledny;
else
return nil;
end;
else
if((mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*%.[%s_]*/")))then
if(adres_biezacy)then
adres_biezacy,dwukrowek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
adres=adres_biezacy.."/"..adres_wzgledny;
else
return nil;
end;
else
adres_wzgledny,dwukropek=mw.ustring.gsub(adres_wzgledny,"^[%s_]*:","");
adres=adres_wzgledny;
end;
end;
if(adres~="")then
while((mw.ustring.match(adres,"/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*/")))do
adres=mw.ustring.gsub(adres,"/[%s_]*/","/");
adres=mw.ustring.gsub(adres,"/[%s_]*%.[%s_]*/","/");
adres=mw.ustring.gsub(adres,"/+","/");
adres=mw.ustring.gsub(adres,"^/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/");
adres=mw.ustring.gsub(adres,"^[^/]*/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
adres=mw.ustring.gsub(adres,"/([^/]*)/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
end;
adres=mw.ustring.gsub(adres,"[%s_]*/[%s_]*","/");
adres=mw.ustring.gsub(adres,"^[%s_]*/+","");
adres=mw.ustring.gsub(adres,"[%s_]*/+","/");
adres=mw.ustring.gsub(adres,"/+[%s_]*$","");
adres=mw.ustring.gsub(adres,"^[%s_]*","");
adres=mw.ustring.gsub(adres,"[%s_]*$","");
adres=mw.ustring.gsub(adres,"[%s_]+"," ");
end;
local wynik=(((dwukropek)and(dwukropek>0)) and ":" or "")..adres;
-----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-1])then tablica_danych_parametrow_szablonu_strony[-1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony=wynik;
end;
-----
return wynik;
end;
function p.PrzekierowanieDoStrony(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_modulu=PobierzParametr(1);
local html_modul=require("Module:Html");
local pudelko_modul=require("Module:Pudełko");
nazwa_modulu=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_modulu);
local czy_nazwa_niepoprawna=pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_modulu);
if(czy_nazwa_niepoprawna)then
mw.log("Niepoprawna nazwa modulu strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
return;
end;
local title=mw.title.makeTitle('',nazwa_modulu);
if(title)then
local strona=title.redirectTarget;
if(not strona)then return;end;
return html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](strona.fullText);
else
mw.log("Nieprawidłowy format nazwy modułu przy uzykiwaniu, czy strona jest odnośnikiem do innej strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
return;
end;
end;
function p.UsuwanieKomentarzowe(tekst,__FUNKCJA_USUWANIA)
local tekst=mw.ustring.gsub(tekst,"(<!%-%-.-%-%->)",__FUNKCJA_USUWANIA or "");
return tekst;
end;
function p.UsuwanieZnakoweKontrolneNiewidzialne(tekst,__FUKCJA_USUWANIA)
local tekst=mw.ustring.gsub(tekst,"([^%C\n\t ])",__FUKCJA_USUWANIA or "");
return tekst;
end;
p["Forma wyrażenia po liczbie"] = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_table_frame=parametry_modul.TypeTable(frame);
local args=czy_table_frame and (frame.args or frame) or nil;
local argument_funkcji_modulu_1=czy_table_frame and (args[1] or "0") or (frame or "0");
local argument_funkcji_modulu_2=czy_table_frame and (args[2] or "zbiorów") or "zbiorów";
local argument_funkcji_modulu_3=czy_table_frame and (args[3] or "zbiór") or "zbiór";
local argument_funkcji_modulu_4=czy_table_frame and (args[4] or "zbiory") or "zbiory";
local bez_liczby=parametry_modul.CzyTak(args["bez liczby"]);
local specjalne_modul=require("Module:Specjalne");
local liczba_number=specjalne_modul["WydzielLiczbę"](argument_funkcji_modulu_1);
if(not liczba_number)then return "(błąd)";end;
local liczba_number=math.abs(liczba_number);
if(liczba_number==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;end;
if(liczba_number==1)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;end;
if(liczba_number<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
if(liczba_number<20)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
local reszta=math.fmod(liczba_number,20);
if(reszta==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
if(reszta==1)then
if(liczba_number<20)then
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;
else
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2
end;
end;
if(reszta<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;
end;
return p;