Przejdź do zawartości

Moduł:S

Z Wikibooks, biblioteki wolnych podręczników.
 Dokumentacja modułu [stwórz] [odśwież]
local function ZamianaDwukropkaNaKodHTML(tekst)
	tekst=mw.ustring.gsub(tekst,"(:)",function(dwukropek)
		return ":";
	end);
	return tekst;
end;
local function ZamianaZnakowaPrzypisaniaNaKodHTML(tekst)
	local html_modul=require("Module:Html");
	tekst=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,}};
	return tekst;
end;
local OpakowanieLinkoweNowiki=function(pole)
	local strony_modul=require('Module:Strony');
	local frame=mw.getCurrentFrame();
	pole=mw.ustring.gsub(pole,"(%a+://%S+)",function(adres)
		local czy_url=strony_modul.SprawdzanieURL(adres);
		if(czy_url)then
			local adres="<nowiki>"..adres.."</nowiki>";
			adres=frame:preprocess(adres);
			return adres;
		end;
	end);
	return pole;
end;
local function StworzSymboliczneWywolanieWedlugZebranychDanych(args, link)
	local wywolanie="&#123;&#123;"..link;
	for name,value in ipairs(args)do
		if(name~=1)then
			value=OpakowanieLinkoweNowiki(value);
			value=ZamianaZnakowaPrzypisaniaNaKodHTML(value);
			value=mw.ustring.gsub(value,"^!","&#33;");
			value=mw.ustring.gsub(value,"\n!","\n&#33;");
			wywolanie=wywolanie.."&#124;"..value;
		end;
	end;
	local wywolanie=wywolanie.."&#125;&#125;";
	return wywolanie;
end;
local function SformatowanaNazwaStronySzablonuSymbolicznegoWywolania(nazwa_stara,nazwa_nowa,nazwa_oryginalna,odsmiec,od_malej)
	if(nazwa_oryginalna)then return nazwa_stara;end;
	if(odsmiec)then if(od_malej)then return mw.getContentLanguage():lcfirst(nazwa_nowa) else return nazwa_nowa;end;end;
	local techniczne_modul=require("Module:Techniczne");
	nazwa_nowa=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_nowa);
	local wzor=mw.ustring.gsub(nazwa_nowa," ","[%%s_]+");
	wzor=mw.ustring.gsub(wzor,"^([%s_:]*)([^:]*)(:)([%s_:]*)(.)",function(a,b,c,d,e)
	    local przestrzen=techniczne_modul["WzórDanejPrzestrzeniNazw"](b);
		local duze=mw.getContentLanguage():ucfirst(e);
		local male=mw.getContentLanguage():lcfirst(e);
		if(duze~=male)then return a..przestrzen..c..d.."["..duze..male.."]";else return s;end;
	end);
	wzor=mw.ustring.gsub(wzor,"^([%s_:]*)(.)",function(a,b)
		local duze=mw.getContentLanguage():ucfirst(b);
		local male=mw.getContentLanguage():lcfirst(b);
		if(duze~=male)then 
			return a.."["..duze..male.."]";			
		else 
			return nil;
		end;
	end);
	wzor=mw.ustring.gsub(wzor,":","[%%s_]*:[%%s_:]*");
	wzor="([%s_]*"..wzor.."[%s_]*)$";
	local nazwa_stara_sformatowana=mw.ustring.match(nazwa_stara,wzor);
	return nazwa_stara_sformatowana or mw.ustring.gsub(nazwa_stara,"^[%s_:]*","");
end;
local function UsunDwukropki(kod)
	local ile;
	repeat
		kod,ile=mw.ustring.gsub(kod,"^([%s_]*):","%1");
	until ile==0;
	local odstepy_przed_nazwy,kod,odstepy_po_nazwy=mw.ustring.match(kod,"^([%s_]*)(.-)([%s_]*)$")
	return kod,odstepy_przed_nazwy,odstepy_po_nazwy;
end;
local function SzablonoweSymboliczneWywolanie(args,modyfikatory,klucz_przestrzeni,rozwazana_nazwa_strony,nazwa_wyswietlana,subnazwa_wyswietlana,subnazwa_bez_ksiazka,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,przed_nazwa,po_nazwa,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,z_przestrzenia,odsmiec,od_malej,analiza)
	local nazwy_modul=require("Module:Nazwy");
	local parametry_modul=require("Module:Parametry");
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	local wiki_modul=require("Module:Wiki");
	-----
	local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
	local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=rozwazana_nazwa_strony,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
	local czy_jezykowe=(parametry_modul.CzyTak(klucz_projektu) or (parametry_modul.CzyTak(kod_jezyka) or parametry_modul.CzyTak(kod_projektu)));
	----
	local Strona=function(strona,klucz_przestrzeni)
		local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
		if(nazwa_przestrzeni=="")then
			return (((not czy_jezykowe)or(czy_biezaca))and nazwy_np_modul[klucz_przestrzeni] or klucz_przestrzeni)..":"..strona;
		elseif((klucz_przestrzeni~="Template")and(nazwa_przestrzeni~=nazwy_np_modul[klucz_przestrzeni]))then
			return (((not czy_jezykowe)or(czy_biezaca))and nazwy_np_modul[klucz_przestrzeni] or klucz_przestrzeni)..":"..strona;
		else
			return strona;
		end;
	end;
	modyfikatory=ZamianaDwukropkaNaKodHTML(modyfikatory);
	local function NazwaSzablonu(subnazwa_wyswietlana,subnazwa_bez_ksiazka,nazwa,nazwa_wyswietlana)
		if(subnazwa_wyswietlana)then
			local subnazwa=mw.ustring.match(nazwa,"/([^/]+)$");
			local subnazwa_po_dwukropku=subnazwa and (mw.ustring.match(subnazwa,":(.-)$") or subnazwa) or (mw.ustring.match(nazwa,":(.-)$") or nazwa);
			return subnazwa_po_dwukropku;
		elseif(subnazwa_bez_ksiazka)then
			return mw.ustring.match(nazwa,"^[^/]-:Książka:(.*)$") or mw.ustring.match(nazwa,"^Książka:(.*)$") or nazwa_wyswietlana or nazwa;
		end;
		return (nazwa_wyswietlana or nazwa);
	end;
	----
	local function NazwaPrzestrzeni()
		if(analiza)then
			if(czy_biezaca)then 
				nazwa_przestrzeni=nazwy_modul.Np{nazwa=klucz_przestrzeni,istnieje="tak",["wynik błędu nietekstowy"]="tak",} or klucz_przestrzeni;
			else
				nazwa_przestrzeni=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,istnieje="tak",["wynik błędu nietekstowy"]="tak",} or klucz_przestrzeni;
			end;
		elseif(not czy_jezykowe)then
			nazwa_przestrzeni=czy_biezaca and nazwy_np_modul[klucz_przestrzeni] or klucz_przestrzeni;
		else
			nazwa_przestrzeni=klucz_przestrzeni;
		end;
		return nazwa_przestrzeni;
	end;
	local NazwaPrefixStrona=function(nazwa)
		if(not nazwa)then return nazwa;end;
		if(mw.ustring.match(nazwa,"/$"))then
			local techniczne_modul=require("Module:Techniczne");
			local ile=techniczne_modul.PoliczZbiory{[1]=nazwa,};
			if(ile==0)then
				return "Specjalna:Strony_według_prefiksu/"..nazwa;
			end;
			return nazwa;
		end;
		return nazwa;
	end;
	local function ZgodneZKluczemPrzestrzeni(klucz_projektu,kod_jezyka,kod_projektu,czy_przestrzen,czy_przestrzen_niepolska)
		local rozwazana_nazwa_strony,odstepy_przed_nazwy,odstepy_po_nazwy=UsunDwukropki(rozwazana_nazwa_strony,nazwa_oryginalna);
		local strona=nazwy_modul[((not czy_przestrzen)and(czy_przestrzen_niepolska)) and "PEŁNANAZWASTRONY" or "NAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,["klucz projektu"]=czy_przestrzen_niepolska and klucz_projektu or nil,["kod języka"]=czy_przestrzen_niepolska and kod_jezyka or nil,["kod projektu"]=czy_przestrzen_niepolska and kod_projektu or nil,};
		local szablonowe_modul=require("Module:Szablonowe");
		local nazwa=nazwa_oryginalna and strona or (z_przestrzenia and szablonowe_modul["PełnaNazwaStronyWywołańSzablonowych"](rozwazana_nazwa_strony,klucz_przestrzeni,kod_jezyka,kod_projektu) or nazwy_modul["NAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,["klucz projektu"]=czy_przestrzen_niepolska and klucz_projektu or nil,["kod języka"]=czy_przestrzen_niepolska and kod_jezyka or nil,["kod projektu"]=czy_przestrzen_niepolska and kod_projektu or nil,})
		if(not z_przestrzenia)then
			if((not nazwa_oryginalna)and(klucz_przestrzeni=="Template"))then
				local inna_nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=nazwa,["klucz projektu"]=czy_przestrzen_niepolska and klucz_projektu or nil,["kod języka"]=czy_przestrzen_niepolska and kod_jezyka or nil,["kod projektu"]=czy_przestrzen_niepolska and kod_projektu or nil,};
				if(inna_nazwa_przestrzeni~="")then 
					nazwa=(((((czy_przestrzen)or(not czy_przestrzen_niepolska)))and(nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":"..strona) or (strona));
				else
					--nazwa=nazwy_modul["NAZWASTRONY"]{nazwa=nazwa,};
				end;
			end;
		end;
		--local nazwa_przestrzeni;
		if(czy_przestrzen)then
			nazwa_przestrzeni=NazwaPrzestrzeni();
		end;
		nazwa=z_przestrzenia and nazwa or SformatowanaNazwaStronySzablonuSymbolicznegoWywolania(rozwazana_nazwa_strony,nazwa,nazwa_oryginalna,odsmiec,od_malej);
		local linki_modul=require("Module:Linki");
		return StworzSymboliczneWywolanieWedlugZebranychDanych(args,odstepy_przed..modyfikatory..przed_nazwa..odstepy_przed_nazwy..linki_modul["Link wewnętrzny"]{["strona"]=NazwaPrefixStrona(((((czy_przestrzen)or(not czy_przestrzen_niepolska)))and(nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":"..strona) or (strona)),["nazwa"]=NazwaSzablonu(subnazwa_wyswietlana,subnazwa_bez_ksiazka,nazwa,nazwa_wyswietlana),["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,analiza=analiza,}..odstepy_po_nazwy..po_nazwa..odstepy_po);
	end;
	local function NieZgodneZKluczemPrzestrzeni(klucz_projektu,kod_jezyka,kod_projektu,czy_przestrzen_niepolska,czy_bez_klucza_przestrzeni,__funkcja,__funkcja2)
		local odstepy_przed_nazwy;local odstepy_po_nazwy;
		if(__funkcja)then
			rozwazana_nazwa_strony,odstepy_przed_nazwy,odstepy_po_nazwy=__funkcja(rozwazana_nazwa_strony,nazwa_oryginalna);
		else
			rozwazana_nazwa_strony,odstepy_przed_nazwy,odstepy_po_nazwy=UsunDwukropki(rozwazana_nazwa_strony,nazwa_oryginalna);
		end;
		
		local strona=nazwy_modul[czy_przestrzen_niepolska and "PEŁNANAZWASTRONY" or "NAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,["klucz projektu"]=czy_przestrzen_niepolska and klucz_projektu or nil,["kod języka"]=czy_przestrzen_niepolska and kod_jezyka or nil,["kod projektu"]=czy_przestrzen_niepolska and kod_projektu or nil,};
		if((czy_przestrzen_niepolska)and(__funkcja2))then
			nazwa_przestrzeni=__funkcja2(klucz_przestrzeni);
		end;
		local szablonowe_modul=require("Module:Szablonowe");
		local nazwa=z_przestrzenia 
				         and szablonowe_modul["PełnaNazwaStronyWywołańSzablonowych"](strona,klucz_przestrzeni,kod_jezyka,kod_projektu)
				           or SformatowanaNazwaStronySzablonuSymbolicznegoWywolania(rozwazana_nazwa_strony,strona,nazwa_oryginalna,odsmiec,od_malej);
				 
		local linki_modul=require("Module:Linki");
		return StworzSymboliczneWywolanieWedlugZebranychDanych(args,odstepy_przed..modyfikatory..przed_nazwa..odstepy_przed_nazwy..linki_modul["Link wewnętrzny"]{["strona"]=NazwaPrefixStrona((not czy_bez_klucza_przestrzeni) and (Strona(strona,klucz_przestrzeni))or((((czy_przestrzen_niepolska)and(__funkcja2)and(nazwa_przestrzeni~="")) and (nazwa_przestrzeni..":") or (""))..strona)),["nazwa"]=NazwaSzablonu(subnazwa_wyswietlana,subnazwa_bez_ksiazka,nazwa,nazwa_wyswietlana),["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,analiza=analiza,}..odstepy_po_nazwy..po_nazwa..odstepy_po);
	end;
	----
	if((czy_jezykowe)and(nazwa_przestrzeni~=""))then
		if(czy_biezaca)then
			if(nazwa_przestrzeni==nazwy_np_modul[klucz_przestrzeni])then
				return ZgodneZKluczemPrzestrzeni(nil,nil,nil,false,true);
			else
				return NieZgodneZKluczemPrzestrzeni(nil,nil,nil,true);
			end;
		else
			nazwa_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,kanoniczna="tak",istnieje="tak",["wynik błędu nietekstowy"]="tak",}
			if(nazwa_przestrzeni==nazwy_np_modul.kanoniczna[klucz_przestrzeni])then
				return ZgodneZKluczemPrzestrzeni(klucz_projektu,kod_jezyka,kod_projektu,false,true);
			else
				return NieZgodneZKluczemPrzestrzeni(klucz_projektu,kod_jezyka,kod_projektu,true);
			end;
		end;
	else
		nazwa_przestrzeni=((czy_jezykowe) and (not czy_biezaca))and nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=rozwazana_nazwa_strony,} or nazwa_przestrzeni;
		if(nazwa_przestrzeni~="")then
			if(nazwa_przestrzeni==nazwy_np_modul[klucz_przestrzeni])then
				if(not czy_jezykowe)then
					return ZgodneZKluczemPrzestrzeni(nil,nil,nil,false,true);
				else
					return ZgodneZKluczemPrzestrzeni(klucz_projektu,kod_jezyka,kod_projektu,true,false);
				end;
			else
				return NieZgodneZKluczemPrzestrzeni(klucz_projektu,kod_jezyka,kod_projektu,true);
			end;
		elseif((mw.ustring.match(rozwazana_nazwa_strony,"^[%s_]*:[%s_:]*"))and((klucz_przestrzeni~="MediaWiki")and(klucz_przestrzeni~="Module")))then
			return NieZgodneZKluczemPrzestrzeni(klucz_projektu,kod_jezyka,kod_projektu,true,true,function(rozwazana_nazwa_strony)
				local odstepy_przed_dwukropek,odstepy_po_dwukropek,rozwazana_uzyskana_nazwa_strony,odstepy_po_nazwy=mw.ustring.match(rozwazana_nazwa_strony,"^([%s_]*):([%s_]*)([^%s_:].-)([%s_]*)$");
				local przed;
				if(not odstepy_przed_dwukropek or not odstepy_po_dwukropek or not rozwazana_uzyskana_nazwa_strony)then
					local odstepy_przed_dwukropek,odstepy_po_dwukropek;
					odstepy_przed_dwukropek,odstepy_po_dwukropek,rozwazana_uzyskana_nazwa_strony,odstepy_po_nazwy=mw.ustring.match(rozwazana_nazwa_strony,"^([%s_:]*):([%s_]*)([^%s_:].-)([%s_]*)$");
					przed=mw.ustring.gsub(odstepy_przed_dwukropek,":","")..":"..odstepy_po_dwukropek;
				else
					przed=odstepy_przed_dwukropek..":"..odstepy_po_dwukropek;
				end;
				return rozwazana_uzyskana_nazwa_strony,przed,odstepy_po_nazwy;
			end);
		else			
			return NieZgodneZKluczemPrzestrzeni(klucz_projektu,kod_jezyka,kod_projektu,true,true,function(rozwazana_nazwa_strony)
				local parametry_modul=require("Module:Parametry");
				local rozwazana_nazwa_strony,odstepy_przed_nazwy,odstepy_po_nazwy=UsunDwukropki(rozwazana_nazwa_strony);
				local strona=analiza and mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=rozwazana_nazwa_strony,[2]="tak",}) or rozwazana_nazwa_strony;
				return strona,odstepy_przed_nazwy,odstepy_po_nazwy;
			end,function(klucz_przestrzeni)
				local nazwa_przestrzeni=NazwaPrzestrzeni();
				return nazwa_przestrzeni;
			end);
		end;
	end;
end;
local function UzyskajDaneOdArgumentuPierwszego(argument_pierwszy,nazwa_wyswietlana)
	local przed,pole_nazwy,po=mw.ustring.match(nazwa_wyswietlana or argument_pierwszy,"^([%s_]*)(.-)([%s_]*)$");
	local szablonowe_modul=require("Module:Szablonowe");
	if(nazwa_wyswietlana)then
		argument_pierwszy=mw.ustring.match(argument_pierwszy,"^[%s_]*(.-)[%s_]*$");
	end;
	local pole,modyfikatory,tab_mod=szablonowe_modul.WydzielanieOpcjiModyfikatorowych(nazwa_wyswietlana and argument_pierwszy or pole_nazwy);
	return przed,pole,po,modyfikatory,tab_mod;
end;
local function OdsmiecParametrySymbolicznegoWywolania(args,usun_konce)
	local parametry_modul=require("Module:Parametry");
	local args2={};
	for licznik,wartosc in ipairs(args)do
		if(licznik==1)then
			args2[licznik]=parametry_modul["Odstępy"]{[1]=wartosc,[2]="tak",};
		else
			local _parametr,_wartosc=mw.ustring.match(wartosc,"^%s*([^=]-)%s*=%s*(.-)%s*$");
			if(_parametr and _wartosc)then
				args2[licznik]=_parametr.."=".._wartosc;
			elseif(usun_konce)then
				args2[licznik]=mw.text.trim(wartosc);
			else
				args2[licznik]=wartosc;
			end
		end;
	end;
	return args2;
end;
local function ParametryFunkcjiSLubM(frame,domyslna_nazwa_szablonu)
		local parametry_modul=require("Module:Parametry");
		local args=parametry_modul.PobierzArgsParametry(frame);
		local klucz_projektu=args["klucz projektu"] or args["k"];
		local kod_jezyka=args["kod języka"] or args["j"];
		local kod_projektu=args["kod projektu"] or args["p"];
		local bez_znacznikow=parametry_modul.CzyTak(args["bez znaczników"]);
		local bez_przetwarzania=parametry_modul.CzyTak(args["bez przetwarzania"]);
		local analiza=parametry_modul.CzyTak(args["analiza"]);
		local z_przestrzenia=parametry_modul.CzyTak(args["z przestrzenią"]);
		local nazwa_wyswietlana=parametry_modul.CzyTak(args["nazwa"]) and args["nazwa"] or nil;
		local subnazwa_wyswietlana=parametry_modul.CzyTak(args["subnazwa"]);
		local subnazwa_bez_ksiazka=parametry_modul.CzyTak(args["subnazwa bez książka"]);
		
		local argument_pierwszy=args[1];
		local czy_niepusty_argument_pierwszy=parametry_modul["CzyTakCiąg"](argument_pierwszy)
		
		local szablonowe_modul=require("Module:Szablonowe");
		
		local function UsuwanieKomentarzy(argument_pierwszy)
					---- Usuwanie normalnych komentarzy z kodu.
			local techniczne_modul=require("Module:Techniczne");
			argument_pierwszy=techniczne_modul.UsuwanieKomentarzowe(argument_pierwszy);
			---- Usuwanie zakodowanych komentarzy z kodu.
			argument_pierwszy=mw.ustring.gsub(argument_pierwszy,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ"),"");
			return argument_pierwszy;
		end;
		local argument_pierwszy=czy_niepusty_argument_pierwszy and UsuwanieKomentarzy(argument_pierwszy) or domyslna_nazwa_szablonu;
		---
		local PrzedPoStronaNazwa=function(nazwa)
			if(not nazwa)then return;end;
			local nazwa,ile=mw.ustring.gsub(nazwa,szablonowe_modul.NormaWzoruKodowaniaTekstu("OGRANICZNIK"),"");
			local przed="";
			repeat
				local wzor="^([%s_]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ").."[%s_]*)"
				local przed_temp=mw.ustring.match(nazwa,wzor);
				if(not przed_temp)then break;end;
				przed=przed..przed_temp;
				nazwa=mw.ustring.gsub(nazwa,wzor,"");
			until false;
			local po="";
			repeat
				local wzor="([%s_]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ","%d+").."[%s_]*)$";
				local po_temp=mw.ustring.match(nazwa,wzor);
				if(not po_temp)then break;end;
				po=po_temp..po;
				nazwa=mw.ustring.gsub(nazwa,wzor,"");
			until false;
			local czy_ile=(ile>0)and true or false;
			return przed,po,nazwa,czy_ile;
		end;
		local przed_nazwa,po_nazwa,nazwa,czy_ile=PrzedPoStronaNazwa(nazwa_wyswietlana);
		nazwa_wyswietlana=nazwa or nazwa_wyswietlana;
		---
		local odstepy_przed,rozwazana_nazwa_strony,odstepy_po,modyfikatory,tab_mod=UzyskajDaneOdArgumentuPierwszego(argument_pierwszy,nazwa_wyswietlana);
		
		local __modyfikatory=args["modyfikatory"];
		if(__modyfikatory)then
			__modyfikatory=mw.ustring.gsub(__modyfikatory,szablonowe_modul.NormaWzoruKodowaniaTekstu("OGRANICZNIK"),"");
		end;
		modyfikatory=parametry_modul.CzyTak(__modyfikatory) and __modyfikatory or modyfikatory;
		if(not parametry_modul["CzyTakCiąg"](rozwazana_nazwa_strony))then 
			rozwazana_nazwa_strony=domyslna_nazwa_szablonu;
		end;
		if(czy_ile)then
			rozwazana_nazwa_strony=parametry_modul["Odstępy"](rozwazana_nazwa_strony);
			modyfikatory=mw.ustring.gsub(modyfikatory,"[%s_]+$","");
		end;
		
		args[1]=rozwazana_nazwa_strony;
		analiza=(not analiza)and (args[1] and mw.ustring.match(args[1],"^[%s_:]*[^%s_:]+:.*$") and true or false) or analiza;
		
		bez_przetwarzania=bez_przetwarzania or ((not analiza) and "tak" or nil);
		
		local nazwa_oryginalna=(not analiza and true) or parametry_modul.CzyTak(args["oryginalna"] or args["o"]);
		local odsmiec=(not analiza and true) or parametry_modul.CzyTak(args["odśmieć"]);
		local historia=(not analiza and true) or parametry_modul.CzyTak(args["historia"]);
		local usun_konce=parametry_modul.CzyTak(args["usuń końce"]);
		local od_malej=parametry_modul.CzyTak(args["od małej"]);
		local usun_odstepy=parametry_modul.CzyTak(args["usuń odstępy"]);
		if(usun_odstepy)then 
			odstepy_przed="";
			odstepy_po="";
			if(odsmiec)then
				if(mw.ustring.match(rozwazana_nazwa_strony,"^[%s_]*:"))then
					rozwazana_nazwa_strony=mw.ustring.gsub(rozwazana_nazwa_strony,"^[%s_:]*","");
					rozwazana_nazwa_strony=":"..rozwazana_nazwa_strony;
				end;
				rozwazana_nazwa_strony=parametry_modul["Odstępy"]{[1]=rozwazana_nazwa_strony,[2]=nil,[3]=nil,};
			end;
		end;
		
		if((odsmiec)and(not historia))then args=OdsmiecParametrySymbolicznegoWywolania(args,usun_konce);end;
        if((odsmiec)and(not historia))then modyfikatory=mw.ustring.gsub(modyfikatory,"[%s_]*","");end;
        
        if(analiza)then
			local wiki_modul=require("Module:Wiki");
			kod_jezyka,kod_projektu=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
			local koncowa_rozwazana_nazwa_strony;
			koncowa_rozwazana_nazwa_strony,kod_jezyka,kod_projektu=wiki_modul.KodyNazwyStrony(rozwazana_nazwa_strony,kod_jezyka,kod_projektu);
			klucz_projektu=nil;
			if(koncowa_rozwazana_nazwa_strony~=rozwazana_nazwa_strony)then
				local techniczne_modul=require("Module:Techniczne");
				local wzor_rozwazana_nazwa_strony=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](koncowa_rozwazana_nazwa_strony);
				local koncowa_rozwazana_nazwa_strony_wynikowa_kodow=mw.ustring.gsub(rozwazana_nazwa_strony,wzor_rozwazana_nazwa_strony.."$","");
				if(mw.ustring.match(koncowa_rozwazana_nazwa_strony_wynikowa_kodow,":[%s_]*:[%s_]*$"))then
					koncowa_rozwazana_nazwa_strony_wynikowa_kodow=mw.ustring.gsub(koncowa_rozwazana_nazwa_strony_wynikowa_kodow,"(:[%s_]*)$","");
				end;
				local wzor_koncowa_rozwazana_nazwa_strony_wynikowa_kodow=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](koncowa_rozwazana_nazwa_strony_wynikowa_kodow);
				local odstep_kodow=((not odsmiec) or (not usun_odstepy)) and mw.ustring.gsub(koncowa_rozwazana_nazwa_strony_wynikowa_kodow,"[%w%p]","") or "";
				rozwazana_nazwa_strony=mw.ustring.gsub(rozwazana_nazwa_strony,"^"..wzor_koncowa_rozwazana_nazwa_strony_wynikowa_kodow,odstep_kodow);
				rozwazana_nazwa_strony=((odsmiec)and(usun_odstepy)) and mw.ustring.gsub(rozwazana_nazwa_strony,"^[%s_:]*:[%s_:]*",":") or rozwazana_nazwa_strony;
			else
				local pudelko_modul=require("Module:Pudełko");
				kod_jezyka=((not kod_jezyka)or(kod_jezyka~=pudelko_modul["Kod języka tego projektu"]()))and kod_jezyka or nil;
				kod_projektu=((not kod_projektu)or(kod_projektu~=pudelko_modul["Kod projektu tego projektu"]()))and kod_projektu or nil;
			end
        end;
		analiza=analiza and "tak" or nil;
		--odstepy_przed=odstepy_przed..(przed_nazwa or "");
		--odstepy_po=(po_nazwa or "")..odstepy_po;
		przed_nazwa=(przed_nazwa or "");
		po_nazwa=(po_nazwa or "");
        return args,nazwa_wyswietlana,subnazwa_wyswietlana,subnazwa_bez_ksiazka,klucz_projektu,kod_jezyka,kod_projektu,bez_znacznikow,bez_przetwarzania,z_przestrzenia,analiza,nazwa_oryginalna,odsmiec,historia,usun_konce,od_malej,usun_odstepy,argument_pierwszy,odstepy_przed,przed_nazwa,rozwazana_nazwa_strony,po_nazwa,odstepy_po,modyfikatory,tab_mod;
end;
local p={
	["S"] = function(frame)
        local args,nazwa_wyswietlana,subnazwa_wyswietlana,subnazwa_bez_ksiazka,klucz_projektu,kod_jezyka,kod_projektu,bez_znacznikow,bez_przetwarzania,z_przestrzenia,analiza,nazwa_oryginalna,odsmiec,historia,usun_konce,od_malej,usun_odstepy,argument_pierwszy,odstepy_przed,przed_nazwa,rozwazana_nazwa_strony,po_nazwa,odstepy_po,modyfikatory,tab_mod=ParametryFunkcjiSLubM(frame,"Nieznany szablon");
        local CzyJestHash=function(rozwazana_nazwa_strony)
        	rozwazana_nazwa_strony=mw.ustring.gsub(rozwazana_nazwa_strony,"&#(%d+);",function(kod)
        		return mw.ustring.char(kod);
        	end);
        	local czy_tak=mw.ustring.match(rozwazana_nazwa_strony,"#") and true or false;
        	return czy_tak;
        end;
        if(CzyJestHash(rozwazana_nazwa_strony))then
        	local blad_modul=require("Module:Błąd");
	    	return blad_modul.error{args={tekst="Problem z wywołaniem symbolicznym szablonu {{s}}: W nazwie strony znaleziono znak \"#\", co jest mylone z nagłówkiem strony!",tag="strong",},};
	    end;
        local s_dane=mw.loadData('Module:S/dane');
        local tab_magiczne_szablony=s_dane.tab_magiczne_szablony;
        if(tab_mod)then
        	local parametry_modul=require("Module:Parametry");
        	if(not parametry_modul["CzySąElementyNazwaneTablicy"](tab_mod))then
        		if(not tab_magiczne_szablony[rozwazana_nazwa_strony])then
        			return SzablonoweSymboliczneWywolanie(args,modyfikatory,"Template",rozwazana_nazwa_strony,nazwa_wyswietlana,subnazwa_wyswietlana,subnazwa_bez_ksiazka,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,przed_nazwa,po_nazwa,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,z_przestrzenia,odsmiec,od_malej,analiza);
        		else
        			return StworzSymboliczneWywolanieWedlugZebranychDanych(args, odstepy_przed..modyfikatory..przed_nazwa,(args[1] or "Nieznany tag")..po_nazwa..odstepy_po);
        		end;
        	elseif(tab_mod["#if:"] or tab_mod["#ifeq:"] or tab_mod["#iferror:"] or tab_mod["#tag:"] or tab_mod["#switch:"] or tab_mod["#property:"] or tab_mod["#expr:"] or tab_mod["#ifexpr:"] or tab_mod["#ifexist:"] or tab_mod["gender:"] or tab_mod["DEFAULTSORT:"])then
	    		 return StworzSymboliczneWywolanieWedlugZebranychDanych(args, odstepy_przed..modyfikatory..(args[1] or "Nieznany tag")..odstepy_po);
        	elseif((not tab_mod["#invoke:"])and(not tab_mod["int:"]))then
        		if(not tab_magiczne_szablony[rozwazana_nazwa_strony])then
					return SzablonoweSymboliczneWywolanie(args,modyfikatory,"Template",rozwazana_nazwa_strony,nazwa_wyswietlana,subnazwa_wyswietlana,subnazwa_bez_ksiazka,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,przed_nazwa,po_nazwa,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,z_przestrzenia,odsmiec,od_malej,analiza);
				else
					return StworzSymboliczneWywolanieWedlugZebranychDanych(args, odstepy_przed..modyfikatory..przed_nazwa..(args[1] or "Nieznany tag")..po_nazwa..odstepy_po);
				end;
			elseif((tab_mod["#invoke:"]) and (not tab_mod["int:"]))then
            	 return SzablonoweSymboliczneWywolanie(args,modyfikatory,"Module",rozwazana_nazwa_strony,nazwa_wyswietlana,subnazwa_wyswietlana,subnazwa_bez_ksiazka,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,przed_nazwa,po_nazwa,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,z_przestrzenia,odsmiec,od_malej,analiza);
	    	elseif((tab_mod["int:"]) and (not tab_mod["#invoke:"]))then
            	 return SzablonoweSymboliczneWywolanie(args,modyfikatory,"MediaWiki",rozwazana_nazwa_strony,nazwa_wyswietlana,subnazwa_wyswietlana,subnazwa_bez_ksiazka,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,przed_nazwa,po_nazwa,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,z_przestrzenia,odsmiec,od_malej,analiza);
	    	elseif(tab_mod["int:"] and tab_mod["#invoke:"])then
	    		local blad_modul=require("Module:Błąd");
	    		return blad_modul.error{args={tekst="Problem z wywołaniem symbolicznym szablonu {{s}}: Podano sprzeczne ze sobą modyfikatory podstawowe!",tag="strong",},};
			else
				if(not tab_magiczne_szablony[rozwazana_nazwa_strony])then
					return SzablonoweSymboliczneWywolanie(args,modyfikatory,"Template",rozwazana_nazwa_strony,nazwa_wyswietlana,subnazwa_wyswietlana,subnazwa_bez_ksiazka,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,przed_nazwa,po_nazwa,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,z_przestrzenia,odsmiec,od_malej,analiza);
				else
					return StworzSymboliczneWywolanieWedlugZebranychDanych(args, odstepy_przed..modyfikatory..przed_nazwa..(args[1] or "Nieznany tag")..po_nazwa..odstepy_po);
				end;
	    	end;
		else
			if(not tab_magiczne_szablony[rozwazana_nazwa_strony])then
				return SzablonoweSymboliczneWywolanie(args,modyfikatory,"Template",rozwazana_nazwa_strony,nazwa_wyswietlana,subnazwa_wyswietlana,subnazwa_bez_ksiazka,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,przed_nazwa,po_nazwa,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,z_przestrzenia,odsmiec,od_malej,analiza);
			else
				return StworzSymboliczneWywolanieWedlugZebranychDanych(args, odstepy_przed..modyfikatory..(args[1] or "Nieznany tag")..odstepy_po);
			end;
		end;
	end,
	["M"] = function(frame)
        local args,nazwa_wyswietlana,subnazwa_wyswietlana,subnazwa_bez_ksiazka,klucz_projektu,kod_jezyka,kod_projektu,bez_znacznikow,bez_przetwarzania,z_przestrzenia,analiza,nazwa_oryginalna,odsmiec,historia,usun_konce,od_malej,usun_odstepy,argument_pierwszy,odstepy_przed,przed_nazwa,rozwazana_nazwa_strony,po_nazwa,odstepy_po,modyfikatory,tab_mod=ParametryFunkcjiSLubM(frame,"Nieznany moduł");
        if(mw.ustring.match(rozwazana_nazwa_strony,"#"))then
        	local blad_modul=require("Module:Błąd");
	    	return blad_modul.error{args={tekst="Problem z wywołaniem symbolicznym szablonu {{s}}: W nazwie strony znaleziono znak \"#\", co jest mylone z nagłówkiem strony!",tag="strong",},};
	    end;
        rozwazana_nazwa_strony=odstepy_przed..rozwazana_nazwa_strony;
        odstepy_przed="";
        return SzablonoweSymboliczneWywolanie(args,"#invoke:","Module",rozwazana_nazwa_strony,nazwa_wyswietlana,subnazwa_wyswietlana,subnazwa_bez_ksiazka,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,przed_nazwa,po_nazwa,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,z_przestrzenia,odsmiec,od_malej,analiza);
	end,
}
return p;