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 str="{{"..(((modyfikator)and(modyfikator~=""))and (modyfikator..":") or "")..link;
	for name,value in ipairs(args)do
		if(name~=1)then
			str=str.."|"..value;
		end;
	end;
	local str=str.."}}";
	return str;
end;
local function dwukropek(str)
	if(str~="")then
		local dwu=mw.ustring.match(str,"^:")
		if(not dwu)then
			return ":"..str;
		end;
	end;
	return str;
end
local function Szablon(args,kod,modyfikator, rozwazane)
	local template=mw.ustring.match(rozwazane,"^:?([Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee]:)");
	if(template)then
		 local nazw,_=mw.ustring.gsub(rozwazane,"^:?[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee]:","");
		 local nazw2=mw.getContentLanguage():ucfirst(nazw);
		 return Parametry(args,modyfikator,"[["..kod.."Template:"..nazw2.."|"..nazw.."]]");
	else
		local template2=mw.ustring.match(rozwazane,"^:?([Ss][Zz][Aa][Bb][Ll][Oo][Nn]:)");
	    if(template2)then
		    local nazw,_=mw.ustring.gsub(rozwazane,"^:?[Ss][Zz][Aa][Bb][Ll][Oo][Nn]:","");
		    local nazw2=mw.getContentLanguage():ucfirst(nazw);
			return Parametry(args,modyfikator,"[["..kod.."Template:"..nazw2.."|"..nazw.."]]");
	    else
			local rozwazane0=mw.ustring.match(rozwazane,"^:");
			if(not rozwazane0)then
			    local nazwa_przestrzeni=require("Module:Nazwy")["NAZWAPRZESTRZENIFUN"](rozwazane);
                if((nazwa_przestrzeni~="Szablon")and(nazwa_przestrzeni~=""))then
               	     local pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONYFUN"](rozwazane);
               	  	 return Parametry(args,modyfikator,"[["..kod..pelna_nazwa_strony.."|"..pelna_nazwa_strony.."]]");
			    else
			 		local rozwazane2,_=mw.ustring.gsub(rozwazane,"^:","");
			 	    local rozwazane22=mw.getContentLanguage():ucfirst(rozwazane2);
			 		return Parametry(args,modyfikator,"[["..kod.."Template:"..rozwazane22.."|"..rozwazane2.."]]");
			 	end;
			 else
			        local nazwa_przestrzeni=require("Module:Nazwy")["NAZWAPRZESTRZENIFUN"](rozwazane);
			        local pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONYFUN"](rozwazane);
			        if(nazwa_przestrzeni~="")then
			 			return Parametry(args,modyfikator,"[["..kod..pelna_nazwa_strony.."|"..pelna_nazwa_strony.."]]");
			 		else
			 			return Parametry(args,modyfikator,":[["..kod..pelna_nazwa_strony.."|"..pelna_nazwa_strony.."]]");
			 		end;
			 end;
		end
	end;
end;
local function Modul(args,kod, modyfikator, rozwazane)
	local module1=mw.ustring.match(rozwazane,"^:?([Mm][Oo][Dd][Uu][Ll][Ee]:)");
	if(module1)then
	    local nazw,_=mw.ustring.gsub(rozwazane,"^:?[Mm][Oo][Dd][Uu][Ll][Ee]:","");
	    local nazw2=mw.getContentLanguage():ucfirst(nazw);
		return Parametry(args,modyfikator,"[["..kod.."Module:"..nazw2.."|"..nazw.."]]");
	else
	    local module2=mw.ustring.match(rozwazane,"^:?([Mm][Oo][Dd][Uu][Łł]:)");
	    if(module2)then
			 local nazw,_=mw.ustring.gsub(rozwazane,"^:?[Mm][Oo][Dd][Uu][Łł]:","");
			 local nazw2=mw.getContentLanguage():ucfirst(nazw);
			 return Parametry(args,modyfikator,"[["..kod.."Module:"..nazw2.."|"..nazw.."]]");
	    else
			 rozwazane=mw.ustring.gsub(rozwazane,"^:","");
			 local rozwazane2=mw.getContentLanguage():ucfirst(rozwazane);
			 return Parametry(args,modyfikator,"[["..kod.."Module:"..rozwazane2.."|"..rozwazane.."]]");
	    end;
    end;	
end;
local function int(args,kod,rozwazane,modyfikator)
	local mediawiki=mw.ustring.match(rozwazane,"^:?([Mm][Ee][Dd][Ii][Aa][Ww][Ii][Kk][Ii]:)");
	if(mediawiki)then
		local nazw,_=mw.ustring.gsub(rozwazane,"^:?[Mm][Ee][Dd][Ii][Aa][Ww][Ii][Kk][Ii]:","");
		local nazw2=mw.getContentLanguage():ucfirst(nazw);				
		return Parametry(args,modyfikator,"[["..kod.."MediaWiki:"..nazw2.."|"..nazw.."]]");
	else
		rozwazane=mw.ustring.gsub(rozwazane,"^:","");
		local rozwazane2=mw.getContentLanguage():ucfirst(rozwazane);
		return Parametry(args,modyfikator,"[["..kod.."MediaWiki:"..rozwazane2.."|"..rozwazane.."]]");
	end;	
end;
local function modyfikatory_proste(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 args=frame:getParent().args;
		local argument_pierwszy=((args[1])and (args[1]~=""))and args[1] or "Nieznany szablon";
		local projekt=args["klucz projektu"] or args["k"];
		local kod=((projekt) and (projekt~=""))and (dwukropek(projekt)..":") or ":";
	    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_proste(rozwazane,modyfikator);
        else
            modyfikator,rozwazane=modyfikatory_proste(argument_pierwszy,nil);
        end;
		if((modyfikator=="#invoke")or(modyfikator=="subst:#invoke")or(modyfikator=="safesubst:#invoke"))then
             return Modul(args,kod, 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,kod,modyfikator, rozwazane);
		elseif((modyfikator=="int")or (modyfikator=="safesubst:int")or(modyfikator=="subst:int")) then
             return int(args,kod,rozwazane,modyfikator);
		else
			return Szablon(args,kod,nil,rozwazane);
		end;
	end,
	["M"] = function(frame)
		local args=frame:getParent().args;
		local rozwazane=((args[1])and(args[1]~=""))and args[1] or "Nieznany moduł";
		local projekt=args["klucz projektu"] or args["k"];
		local kod=((projekt) and (projekt~=""))and (dwukropek(projekt)..":") or ":";
        return Modul(args,kod, "#invoke", rozwazane)
	end,
}
return p;