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 Parametry(args, modyfikator, link)
	local wywolanie="{{"..(((modyfikator)and(modyfikator~=""))and (modyfikator..":") or "")..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 Szablon(args,klucz_projektu,modyfikator, rozwazane)
    local odstepy_przed,odstepy_po=mw.ustring.match(rozwazane,"^(%s*).-(%s*)$")
	rozwazane=mw.text.trim(rozwazane);
	local nazwy_modul=require("Module:Nazwy");
	local wiki_modul=require("Module:Wiki");
	local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,};
	local szablon_kanoniczna="Template";local szablon_niekanoniczna;
	local nazwa_polska;
	if(czy_biezaca)then
		szablon_niekanoniczna=nazwy_modul.Np{nazwa="Template",};
		szablon_nazwa_polska=szablon_niekanoniczna;
	else
		szablon_niekanoniczna=nazwy_modul.NpDane{nazwa="Template",["klucz projektu"]=klucz_projektu,};
		szablon_nazwa_polska=nazwy_modul.NpDane{nazwa="Template",["klucz projektu"]=klucz_projektu,["po polsku"]="tak",};
	end;
	local techniczne_modul=require("Module:Techniczne");
	local wzor_szablon_kanoniczna=techniczne_modul["WzórDanejPrzestrzeniNazw"](szablon_kanoniczna);
	local wzor_szablon_niekanoniczna=techniczne_modul["WzórDanejPrzestrzeniNazw"](szablon_niekanoniczna);
	local wzor_szablon_po_polsku=not czy_biezaca and techniczne_modul["WzórDanejPrzestrzeniNazw"](szablon_nazwa_polska) or nil;
	local bez_znacznikow=args["bez znaczników"];
	local bez_przetwarzania=args["bez przetwarzania"];
	local template=mw.ustring.match(rozwazane,"^:?("..wzor_szablon_kanoniczna..":)");
	if(template)then
		 local nazw,_=mw.ustring.gsub(rozwazane,"^:?"..wzor_szablon_kanoniczna..":","");
		 local nazw2=mw.getContentLanguage():ucfirst(nazw);
		 return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]="Template:"..nazw2,["nazwa"]=nazw,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
	else
		local template2=mw.ustring.match(rozwazane,"^:?("..wzor_szablon_niekanoniczna..":)");
	    if(template2)then
		    local nazw,_=mw.ustring.gsub(rozwazane,"^:?"..wzor_szablon_niekanoniczna..":","");
		    local nazw2=mw.getContentLanguage():ucfirst(nazw);
			return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]="Template:"..nazw2,["nazwa"]=nazw,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
	    else
	    	local template3=not czy_biezaca and mw.ustring.match(rozwazane,"^:?("..wzor_szablon_po_polsku..":)") or nil;
	    	if(template3)then
		    	local nazw,_=mw.ustring.gsub(rozwazane,"^:?"..wzor_szablon_po_polsku..":","");
		    	local nazw2=mw.getContentLanguage():ucfirst(nazw);
				return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]="Template:"..nazw2,["nazwa"]=nazw,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
	        else
				local rozwazane0=mw.ustring.match(rozwazane,"^:");
				if(not rozwazane0)then
			    	local nazwa_przestrzeni=require("Module:Nazwy")["NAZWAPRZESTRZENI"](rozwazane);
                	if((nazwa_przestrzeni~="Szablon")and(nazwa_przestrzeni~=""))then
               	    	 local pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"](rozwazane);
               	  		return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]=pelna_nazwa_strony,["nazwa"]=pelna_nazwa_strony,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
			    	else
			 			local rozwazane2,_=mw.ustring.gsub(rozwazane,"^:","");
			 	    	local rozwazane22=mw.getContentLanguage():ucfirst(rozwazane2);
			 			return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]="Template:"..rozwazane22,["nazwa"]=rozwazane2,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
			 		end;
				else
			        local nazwa_przestrzeni=require("Module:Nazwy")["NAZWAPRZESTRZENI"](rozwazane);
			        local pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"](rozwazane);
			        if(nazwa_przestrzeni~="")then
			 			return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]=pelna_nazwa_strony,["nazwa"]=pelna_nazwa_strony,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
			 		else
			 			return Parametry(args,modyfikator,odstepy_przed..":"..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]=pelna_nazwa_strony,["nazwa"]=pelna_nazwa_strony,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
			 		end;
				end;
			end;
		end
	end;
end;
local function Modul(args,klucz_projektu, modyfikator, rozwazane)
    local odstepy_przed,odstepy_po=mw.ustring.match(rozwazane,"(%s*).-(%s*)$")
	rozwazane=mw.text.trim(rozwazane);
    local odstepy_przed,odstepy_po=mw.ustring.match(rozwazane,"(%s*).-(%s*)$")
	rozwazane=mw.text.trim(rozwazane);
	local nazwy_modul=require("Module:Nazwy");
	local wiki_modul=require("Module:Wiki");
	local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,};
	local modul_kanoniczna="Module";local modul_niekanoniczna;
	local modul_nazwa_polska;
	if(czy_biezaca)then
		modul_niekanoniczna=nazwy_modul.Np{nazwa="Module",};
		modul_nazwa_polska=modul_niekanoniczna;
	else
		modul_niekanoniczna=nazwy_modul.NpDane{nazwa="Module",["klucz projektu"]=klucz_projektu,};
		modul_nazwa_polska=nazwy_modul.NpDane{nazwa="Module",["klucz projektu"]=klucz_projektu,["po polsku"]="tak",};
	end;
	local techniczne_modul=require("Module:Techniczne");
	local wzor_modul_kanoniczna=techniczne_modul["WzórDanejPrzestrzeniNazw"](modul_kanoniczna);
	local wzor_modul_niekanoniczna=techniczne_modul["WzórDanejPrzestrzeniNazw"](modul_niekanoniczna);
	local wzor_modul_po_polsku=not czy_biezaca and techniczne_modul["WzórDanejPrzestrzeniNazw"](modul_nazwa_polska) or nil;
	local module1=mw.ustring.match(rozwazane,"^:?("..wzor_modul_kanoniczna..":)");
	local bez_znacznikow=args["bez znaczników"];
	local bez_przetwarzania=args["bez przetwarzania"];
	if(module1)then
	    local nazw,_=mw.ustring.gsub(rozwazane,"^:?"..wzor_modul_kanoniczna..":","");
	    local nazw2=mw.getContentLanguage():ucfirst(nazw);
		return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="Module:"..nazw2,["nazwa"]=nazw,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,},}..odstepy_po);
	else
	    local module2=mw.ustring.match(rozwazane,"^:?("..wzor_modul_niekanoniczna..":)");
	    if(module2)then
			 local nazw,_=mw.ustring.gsub(rozwazane,"^:?"..wzor_modul_niekanoniczna..":","");
			 local nazw2=mw.getContentLanguage():ucfirst(nazw);
			 return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="Module:"..nazw2,["nazwa"]=nazw,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,},}..odstepy_po);
	    else
	    	 local module3=not czy_biezaca and mw.ustring.match(rozwazane,"^:?("..wzor_modul_po_polsku..":)") or nil;
	    	 if(module3)then
				local nazw,_=mw.ustring.gsub(rozwazane,"^:?"..wzor_modul_po_polsku..":","");
				local nazw2=mw.getContentLanguage():ucfirst(nazw);
				return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="Module:"..nazw2,["nazwa"]=nazw,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,},}..odstepy_po);
	         else
				rozwazane=mw.ustring.gsub(rozwazane,"^:","");
				local rozwazane2=mw.getContentLanguage():ucfirst(rozwazane);
				return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="Module:"..rozwazane2,["nazwa"]=rozwazane,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,},}..odstepy_po);
			end;
	    end;
    end;	
end;
local function int(args,klucz_projektu,rozwazane,modyfikator)
    local odstepy_przed,odstepy_po=mw.ustring.match(rozwazane,"(%s*).-(%s*)$")
	rozwazane=mw.text.trim(rozwazane);
	local nazwy_modul=require("Module:Nazwy");
	local wiki_modul=require("Module:Wiki");
	local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,};
	local mediawiki_kanoniczna="Module";local mediawiki_niekanoniczna;
	local mediawiki_nazwa_polska;
	if(czy_biezaca)then
		mediawiki_niekanoniczna=nazwy_modul.Np{nazwa="MediaWiki",};
		mediawiki_nazwa_polska=mediawiki_niekanoniczna;
	else
		mediawiki_niekanoniczna=nazwy_modul.NpDane{nazwa="MediaWiki",["klucz projektu"]=klucz_projektu,};
		mediawiki_nazwa_polska=nazwy_modul.NpDane{nazwa="MediaWiki",["klucz projektu"]=klucz_projektu,["po polsku"]="tak"};
	end;
	local techniczne_modul=require("Module:Techniczne");
	local wzor_mediawiki_kanoniczna=techniczne_modul["WzórDanejPrzestrzeniNazw"](mediawiki_kanoniczna);
	local wzor_mediawiki_niekanoniczna=techniczne_modul["WzórDanejPrzestrzeniNazw"](mediawiki_niekanoniczna);
	local wzor_mediawiki_po_polsku=not czy_biezaca and techniczne_modul["WzórDanejPrzestrzeniNazw"](mediawiki_nazwa_polska) or nil;
	local mediawiki=mw.ustring.match(rozwazane,"^:?("..wzor_mediawiki_kanoniczna..":)");
	local bez_znacznikow=args["bez znaczników"];
	local bez_przetwarzania=args["bez przetwarzania"];
	if(mediawiki)then
		local nazw,_=mw.ustring.gsub(rozwazane,"^:?"..wzor_mediawiki_kanoniczna..":","");
		local nazw2=mw.getContentLanguage():ucfirst(nazw);				
		return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="MediaWiki:"..nazw2,["nazwa"]=nazw,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,},}..odstepy_po);
	else
		local mediawiki2=mw.ustring.match(rozwazane,"^:?("..wzor_mediawiki_niekanoniczna..":)");
	    if(mediawiki2)then
			 local nazw,_=mw.ustring.gsub(rozwazane,"^:?"..wzor_mediawiki_niekanoniczna..":","");
			 local nazw2=mw.getContentLanguage():ucfirst(nazw);
			 return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="MediaWiki:"..nazw2,["nazwa"]=nazw,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,},}..odstepy_po);
	    else
			local mediawiki3=not czy_biezaca and mw.ustring.match(rozwazane,"^:?("..wzor_mediawiki_po_polsku..":)") or nil;
	    	if(mediawiki3)then
	    		local nazw,_=mw.ustring.gsub(rozwazane,"^:?"..wzor_mediawiki_po_polsku..":","");
				local nazw2=mw.getContentLanguage():ucfirst(nazw);
				return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="MediaWiki:"..nazw2,["nazwa"]=nazw,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,},}..odstepy_po);
	    	else
				rozwazane=mw.ustring.gsub(rozwazane,"^:","");
				local rozwazane2=mw.getContentLanguage():ucfirst(rozwazane);
				return Parametry(args,modyfikator,odstepy_przed..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="MediaWiki:"..rozwazane2,["nazwa"]=rozwazane,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,},}..odstepy_po);
			 end;
	    end;
	end;	
end;
local function modyfikatory_zwykle(rozwazane,modyfikator)
    local modyfikator2=mw.ustring.match(rozwazane,"^%s*(#invoke)%s*:");
	if(modyfikator2=="#invoke")then 
	       modyfikator2=((modyfikator)and (modyfikator..":") or "").."#invoke";
	       rozwazane=mw.ustring.match(rozwazane,"^%s*#invoke%s*:%s*(.-)%s*$");
	       return modyfikator2,rozwazane;
	 end;
	 local modyfikator2=mw.ustring.match(rozwazane,"^%s*(msg)%s*:");
	 if(modyfikator2=="msg")then 
	       modyfikator2=((modyfikator)and (modyfikator..":") or "").."msg";
	       rozwazane=mw.ustring.match(rozwazane,"^%s*msg%s*:%s*(.-)%s*$");
	       return modyfikator2,rozwazane;
	 end;
	 local modyfikator2=mw.ustring.match(rozwazane,"^%s*(msgnw)%s*:");
	 if(modyfikator2=="msgnw")then 
	       modyfikator2=((modyfikator)and (modyfikator..":") or "").."msgnw";
	       rozwazane=mw.ustring.match(rozwazane,"^%s*msgnw%s*:%s*(.-)%s*$");
	       return modyfikator2,rozwazane;
	 end;
	 local modyfikator2=mw.ustring.match(rozwazane,"^%s*(raw)%s*:");
	 if(modyfikator2=="raw")then 
	    modyfikator2=((modyfikator)and (modyfikator..":") or "").."raw";
	    rozwazane=mw.ustring.match(rozwazane,"^%s*raw%s*:%s*(.-)%s*$");
	    return modyfikator2,rozwazane;
	 end; 
	 local modyfikator2=mw.ustring.match(rozwazane,"^%s*(int)%s*:");
	 if(modyfikator2=="int")then 
	    modyfikator2=((modyfikator)and (modyfikator..":") or "").."int";
	    rozwazane=mw.ustring.match(rozwazane,"^%s*int%s*:%s*(.-)%s*$");
	    return modyfikator2,rozwazane;
	 end; 
	 return modyfikator,rozwazane;
end;
local p={
	["S"] = function(frame)
		local parametry_modul=require("Module:Parametry");
		local args=frame and ((frame.getParent and (parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame).args or frame) or {};
		local argument_pierwszy=((args[1])and (args[1]~=""))and args[1] or "Nieznany szablon";
		local klucz_projektu=args["klucz projektu"] or args["k"];
	    local rozwazane;
	    local modyfikator=mw.ustring.match(argument_pierwszy,"^%s*(subst)%s*:");
        if(modyfikator)then 
        	rozwazane=mw.ustring.match(argument_pierwszy,"^%s*subst%s*:%s*(.-)%s*$");
        else
            modyfikator=mw.ustring.match(argument_pierwszy,"^%s*(safesubst)%s*:");
            if(modyfikator)then
            	 rozwazane=mw.ustring.match(argument_pierwszy,"^%s*safesubst%s*:%s*(.-)%s*$");
            end;
        end;
        local tab;
        if(modyfikator)then
           modyfikator,rozwazane=modyfikatory_zwykle(rozwazane,modyfikator);
        else
            modyfikator,rozwazane=modyfikatory_zwykle(argument_pierwszy,nil);
        end;
		if((modyfikator=="#invoke")or(modyfikator=="subst:#invoke")or(modyfikator=="safesubst:#invoke"))then
             return Modul(args,klucz_projektu, modyfikator, rozwazane);
		elseif((modyfikator=="msg")or(modyfikator=="msgnw")or(modyfikator=="raw")or(modyfikator=="subst:msg")or(modyfikator=="subst:msgnw")or(modyfikator=="subst:raw")
			      or(modyfikator=="safesubst:msg")or(modyfikator=="safesubst:msgnw")or(modyfikator=="safesubst:raw")
			          or(modyfikator=="subst")or(modyfikator=="safesubst"))then
			return Szablon(args,klucz_projektu,modyfikator, rozwazane);
		elseif((modyfikator=="int")or (modyfikator=="safesubst:int")or(modyfikator=="subst:int")) then
             return int(args,klucz_projektu,rozwazane,modyfikator);
		else
			return Szablon(args,klucz_projektu,nil,rozwazane);
		end;
	end,
	["M"] = function(frame)
		local parametry_modul=require("Module:Parametry");
		local args=frame and ((frame.getParent and (parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame).args or frame) or {};
		local rozwazane=((args[1])and(args[1]~=""))and args[1] or "Nieznany moduł";
		local klucz_projektu=args["klucz projektu"] or args["k"];
        return Modul(args,klucz_projektu, "#invoke", rozwazane)
	end,
}
return p;