Moduł:S

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania
Template-info.png Dokumentacja modułu [stwórz] [odśwież]
local function StworzSymboliczneWywolanieWedlugZebranychDanych(args, link)
	local wywolanie="{{"..link;
	for name,value in ipairs(args)do
		if(name~=1)then
			wywolanie=wywolanie.."|"..value;
		end;
	end;
	local wywolanie=wywolanie.."}}";
	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 s;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 SzablonoweSymboliczneWywolanie(args,modyfikatory,klucz_przestrzeni,rozwazana_nazwa_strony,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,odsmiec,od_malej,analiza)
	local nazwy_modul=require("Module:Nazwy");
	if(analiza)then
		local wiki_modul=require("Module:Wiki");
		kod_jezyka,kod_projektu=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
		rozwazana_nazwa_strony,kod_jezyka,kod_projektu=wiki_modul.KodyNazwyStrony(rozwazana_nazwa_strony,kod_jezyka,kod_projektu);
		klucz_projektu=nil;
	end;
	local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=rozwazana_nazwa_strony,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
	if((klucz_projektu or (kod_jezyka or kod_projektu))and(nazwa_przestrzeni~=""))then
		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,};
		if(czy_biezaca)then
			local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
			if(nazwa_przestrzeni==nazwy_np_modul[klucz_przestrzeni])then
				local strona=nazwy_modul["PEŁNANAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,};
				local nazwa=nazwa_oryginalna and strona or nazwy_modul["NAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,}
				if((not nazwa_oryginalna)and(klucz_przestrzeni=="Template"))then
					local inna_nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
					if(inna_nazwa_przestrzeni~="")then 
						nazwa=strona;
					else
						nazwa=nazwy_modul["NAZWASTRONY"]{nazwa=nazwa,};
					end;
				end;
				nazwa=SformatowanaNazwaStronySzablonuSymbolicznegoWywolania(rozwazana_nazwa_strony,nazwa,nazwa_oryginalna,odsmiec,od_malej);
				local linki_modul=require("Module:Linki");
				return StworzSymboliczneWywolanieWedlugZebranychDanych(args,odstepy_przed..modyfikatory..linki_modul["Link wewnętrzny"]{["strona"]=strona,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
			else
				local strona=nazwy_modul["PEŁNANAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,};
				local nazwa=SformatowanaNazwaStronySzablonuSymbolicznegoWywolania(rozwazana_nazwa_strony,strona,nazwa_oryginalna,odsmiec,od_malej);
				local linki_modul=require("Module:Linki");
				return StworzSymboliczneWywolanieWedlugZebranychDanych(args,odstepy_przed..modyfikatory..linki_modul["Link wewnętrzny"]{["strona"]=strona,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
			end;
		else
			local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
			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
				local strona=nazwy_modul["PEŁNANAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
				local nazwa=nazwa_oryginalna and strona or nazwy_modul["NAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
				nazwa=SformatowanaNazwaStronySzablonuSymbolicznegoWywolania(rozwazana_nazwa_strony,nazwa,nazwa_oryginalna,odsmiec,od_malej);
				local linki_modul=require("Module:Linki");
				return StworzSymboliczneWywolanieWedlugZebranychDanych(args,odstepy_przed..modyfikatory..linki_modul["Link wewnętrzny"]{["strona"]=strona,["nazwa"]=nazwa,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
			else
				local strona=nazwy_modul["PEŁNANAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
				local nazwa=SformatowanaNazwaStronySzablonuSymbolicznegoWywolania(rozwazana_nazwa_strony,strona,nazwa_oryginalna,odsmiec,od_malej);
				local linki_modul=require("Module:Linki");
				return StworzSymboliczneWywolanieWedlugZebranychDanych(args,odstepy_przed..modyfikatory..linki_modul["Link wewnętrzny"]{["strona"]=strona,["nazwa"]=nazwa,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
			end;
		end;
	else
		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=((klucz_projektu or (kod_jezyka or kod_projektu)) and (not czy_biezaca))and nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=rozwazana_nazwa_strony,} or nazwa_przestrzeni;
		if(nazwa_przestrzeni~="")then
			local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
			if(nazwa_przestrzeni==nazwy_np_modul[klucz_przestrzeni])then
				local nazwa_strony=nazwy_modul["NAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,};
				local nazwa=nazwa_oryginalna and nazwy_modul["PEŁNANAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,} or nazwa_strony;
				if((not nazwa_oryginalna)and(klucz_przestrzeni=="Template"))then
					local inna_nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
					if(inna_nazwa_przestrzeni~="")then 
						nazwa=nazwy_modul["PEŁNANAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,};
					else
						nazwa=nazwy_modul["NAZWASTRONY"]{nazwa=nazwa,};
					end;
				end;
				nazwa=SformatowanaNazwaStronySzablonuSymbolicznegoWywolania(rozwazana_nazwa_strony,nazwa,nazwa_oryginalna,odsmiec,od_malej);
				local nazwa_przestrzeni;
				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;
				else
					nazwa_przestrzeni=klucz_przestrzeni;
				end;
				local linki_modul=require("Module:Linki");
				return StworzSymboliczneWywolanieWedlugZebranychDanych(args,odstepy_przed..modyfikatory..linki_modul["Link wewnętrzny"]{["strona"]=nazwa_przestrzeni..":"..nazwa_strony,["nazwa"]=nazwa,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
			else			
				local nazwa_przestrzeni_kanoniczna=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,kanoniczna="tak",istnieje="tak",["wynik błędu nietekstowy"]="tak",} or nazwa_przestrzeni;
				local strona=((nazwa_przestrzeni_kanoniczna~="")and(nazwa_przestrzeni_kanoniczna..":")or"")..nazwy_modul["NAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,};
				strona=nazwy_modul["PEŁNANAZWASTRONY"]{nazwa=strona,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
				local nazwa=SformatowanaNazwaStronySzablonuSymbolicznegoWywolania(rozwazana_nazwa_strony,strona,nazwa_oryginalna,odsmiec,od_malej);
				local linki_modul=require("Module:Linki");
				return StworzSymboliczneWywolanieWedlugZebranychDanych(args,odstepy_przed..modyfikatory..linki_modul["Link wewnętrzny"]{["strona"]=strona,["nazwa"]=nazwa,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
			end;
		elseif((mw.ustring.match(rozwazana_nazwa_strony,"^[%s_]*:[%s_:]*"))and((klucz_przestrzeni~="MediaWiki")and(klucz_przestrzeni~="Module")))then			
			local rozwazana_nazwa_strony=mw.ustring.gsub(rozwazana_nazwa_strony,"^[%s_]*:[%s_:]*","");
			local strona=nazwy_modul["PEŁNANAZWASTRONY"]{nazwa=rozwazana_nazwa_strony,};
			local nazwa=SformatowanaNazwaStronySzablonuSymbolicznegoWywolania(rozwazana_nazwa_strony,strona,nazwa_oryginalna,odsmiec,od_malej);
			local linki_modul=require("Module:Linki");
			return StworzSymboliczneWywolanieWedlugZebranychDanych(args,odstepy_przed..modyfikatory..":"..require("Module:Linki")["Link wewnętrzny"]{["strona"]=strona,["nazwa"]=nazwa,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
		else			
			local parametry_modul=require("Module:Parametry");
			local strona=analiza and mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=rozwazana_nazwa_strony,[2]="tak",}) or rozwazana_nazwa_strony;
			local nazwa=SformatowanaNazwaStronySzablonuSymbolicznegoWywolania(rozwazana_nazwa_strony,strona,nazwa_oryginalna,odsmiec,od_malej);
			local nazwa_przestrzeni;
			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;
			else
				nazwa_przestrzeni=klucz_przestrzeni;
			end;
			local linki_modul=require("Module:Linki");
			return StworzSymboliczneWywolanieWedlugZebranychDanych(args,odstepy_przed..modyfikatory..require("Module:Linki")["Link wewnętrzny"]{["strona"]=nazwa_przestrzeni..":"..strona,["nazwa"]=nazwa,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
		end;
	end;
end;
local function UzyskajDaneOdArgumentuPierwszego(argument_pierwszy)
	local przed,pole_nazwy,po=mw.ustring.match(argument_pierwszy,"^([%s_]*)(.-)([%s_]*)$");
	local szablonowe_modul=require("Module:Szablonowe");
	local pole,modyfikatory,tab_mod=szablonowe_modul.WydzielModyfikatory(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);
			end
		end;
	end;
	return args2;
end;
local p={
	["S"] = function(frame)
		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 argument_pierwszy=parametry_modul["CzyTakCiąg"](args[1]) and args[1] or "Nieznany szablon";
		local odstepy_przed,rozwazana_nazwa_strony,odstepy_po,modyfikatory,tab_mod=UzyskajDaneOdArgumentuPierwszego(argument_pierwszy);
		if(not parametry_modul["CzyTakCiąg"](rozwazana_nazwa_strony))then rozwazana_nazwa_strony="Nieznany szablon";end;
		
		args[1]=rozwazana_nazwa_strony;
		analiza=(not analiza)and (args[1] and mw.ustring.match(args[1],":") 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"]);
		
		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(tab_mod and((not tab_mod["#invoke:"])and(not tab_mod["int:"])))then
			return SzablonoweSymboliczneWywolanie(args,modyfikatory,"Template",rozwazana_nazwa_strony,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,odsmiec,od_malej,analiza);
		elseif(tab_mod and tab_mod["#invoke:"])then
             return SzablonoweSymboliczneWywolanie(args,modyfikatory,"Module",rozwazana_nazwa_strony,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,odsmiec,od_malej,analiza);
	    elseif(tab_mod and tab_mod["int:"]) then
             return SzablonoweSymboliczneWywolanie(args,modyfikatory,"MediaWiki",rozwazana_nazwa_strony,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,odsmiec,od_malej,analiza);
		else
			return SzablonoweSymboliczneWywolanie(args,modyfikatory,"Template",rozwazana_nazwa_strony,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,odsmiec,od_malej,analiza);
		end;
	end,
	["M"] = function(frame)
		local parametry_modul=require("Module:Parametry");
		local args=parametry_modul.PobierzArgsParametry(frame);
		local rozwazana_nazwa_strony=parametry_modul["CzyTakCiąg"](args[1]) and args[1] or "Nieznany moduł";
		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"]);
		
		analiza=(not analiza)and (args[1] and mw.ustring.match(args[1],":") 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"]);
		
		if((odsmiec)and(not historia))then args=OdsmiecParametrySymbolicznegoWywolania(args,usun_konce);end;
		local rozwazana_nazwa_strony=parametry_modul["CzyTakCiąg"](args[1]) and args[1] or "Nieznany moduł";
		
		local odstepy_przed,rozwazana_nazwa_strony,odstepy_po=mw.ustring.match(rozwazana_nazwa_strony,"^([%s_]*)(.-)([%s_]*)$");
        return SzablonoweSymboliczneWywolanie(args,"#invoke:","Module",rozwazana_nazwa_strony,klucz_projektu,kod_jezyka,kod_projektu,odstepy_przed,odstepy_po,nazwa_oryginalna,bez_znacznikow,bez_przetwarzania,odsmiec,od_malej,analiza);
	end,
}
return p;