Moduł:Brudnopis/Persino/s

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Brudnopis/Persino/s/opis.

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 Szablon(args,kod_jezyka,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]:","");
		 return Parametry(args,modyfikator,"[["..kod.."Template:"..nazw.."|"..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]:","");
			return Parametry(args,"","[["..kod.."Template:"..nazw.."|"..nazw.."]]");
	    else
			local rozwazane0=mw.ustring.match(rozwazane,"^:");
			if(not rozwazane0)then
			    local nazwa_przestrzeni=mw.getCurrentFrame():callParserFunction{name='#invoke:Nazwy',args={"NAZWAPRZESTRZENI",rozwazane}};
                if((nazwa_przestrzeni~="Szablon")and(nazwa_przestrzeni~=""))then
               	     local pelna_nazwa_strony=mw.getCurrentFrame():callParserFunction{name='#invoke:Nazwy',args={"PEŁNANAZWASTRONY",rozwazane}};
               	  	 local nazwa_strony=mw.getCurrentFrame():callParserFunction{name='#invoke:Nazwy',args={"NAZWASTRONY",rozwazane}};
               	  	 return Parametry(args,modyfikator,"[["..kod..pelna_nazwa_strony.."|"..nazwa_strony.."]]");
			    else
			 		local rozwazane2,_=mw.ustring.gsub(rozwazane,"^:","");
			 		return Parametry(args,modyfikator,"[["..kod.."Template:"..rozwazane2.."|"..rozwazane2.."]]");
			 	end;
			 else
			 		local rozwazane2,_=mw.ustring.gsub(rozwazane,"^:","");
			        local nazwa_przestrzeni=mw.getCurrentFrame():callParserFunction{name='#invoke:Nazwy',args={"NAZWAPRZESTRZENI",rozwazane}};
			        if(nazwa_przestrzeni~="")then
			 			return Parametry(args,modyfikator,"[["..kod..rozwazane2.."|"..rozwazane2.."]]");
			 		else
			 			return Parametry(args,modyfikator,":[["..kod..rozwazane2.."|"..rozwazane2.."]]");
			 		end;
			 end;
		end
	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 nil;
end;
local p={
	["s"] = function(frame)
		local args=frame:getParent().args;
		local argument_pierwszy=args[1];
		local kod_projektu=frame:getParent().args["kod projektu"];
		local kod_jezyka=frame:getParent().args["kod języka"];
		local kod=((kod_projektu) and (kod_projektu~=""))and (kod_projektu..":") or "";
	    local kod=((kod_jezyka) and (kod_jezyka~=""))and (kod..(kod_jezyka..":")) or kod;
	    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
           tab=modyfikatory_proste(rozwazane,modyfikator);
           if(tab)then
        		modyfikator=tab[1];
        		rozwazane=tab[2];
        	end;
        else
            local tab=modyfikatory_proste(argument_pierwszy,nil);
            if(tab)then
            	modyfikator=tab[1];
            	rozwazane=tab[2];
            else
            	 modyfikator="";
            end;
        end;
		if((modyfikator=="#invoke")or(modyfikator=="subst:#invoke")or(modyfikator=="safesubst:#invoke"))then
				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]:","");
			    	 return Parametry(args,modyfikator,"[["..kod.."Module:"..nazw.."|"..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][Łł]:","");
			    		return Parametry(args,modyfikator,"[["..kod.."Module:"..nazw.."|"..nazw.."]]");
			    	else
			    		rozwazane=mw.ustring.gsub(rozwazane,"^:","");
			    		return Parametry(args,modyfikator,"[["..kod.."Module:"..rozwazane.."|"..rozwazane.."]]");
			        end;
			    end;
		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_jezyka,kod,modyfikator, rozwazane)
		elseif((modyfikator=="int")or (modyfikator=="safesubst:int")or(modyfikator=="subst:int")) then
			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]:","");
				return Parametry(args,modyfikator,"[["..kod.."MediaWiki:"..nazw.."|"..nazw.."]]");
			else
				rozwazane=mw.ustring.gsub(rozwazane,"^:","");
				return Parametry(args,modyfikator,"[["..kod.."MediaWiki:"..rozwazane.."|"..rozwazane.."]]");
			end;
		else
			    local nazwa_przestrzeni=mw.getCurrentFrame():callParserFunction{name='#invoke:Nazwy',args={"NAZWAPRZESTRZENI",argument_pierwszy}};
               	if(nazwa_przestrzeni~="")then
               		if(nazwa_przestrzeni=="Szablon")then
               	        return Szablon(args,kod_jezyka,kod,nil,argument_pierwszy)		
               		else
               	  		local pelna_nazwa_strony=mw.getCurrentFrame():callParserFunction{name='#invoke:Nazwy',args={"PEŁNANAZWASTRONY",argument_pierwszy}};
               	  		return Parametry(args,"","[["..kod..pelna_nazwa_strony.."|"..pelna_nazwa_strony.."]]");
               	  	end;
               	 else
               	  	local rozwazane2=mw.ustring.match(argument_pierwszy,"^:");
               	  	if(rozwazane2)then
               	  		local pelna_nazwa_strony=mw.getCurrentFrame():callParserFunction{name='#invoke:Nazwy',args={"PEŁNANAZWASTRONY",argument_pierwszy}};
               	  		return Parametry(args,"",":[["..kod..pelna_nazwa_strony.."|"..pelna_nazwa_strony.."]]");
               	  	else
               	  		return Parametry(args,"","[["..kod.."Template:"..argument_pierwszy.."|"..argument_pierwszy.."]]");
               	  	end;
               	 end;
		end;
	end,
	["M"] = function(frame)
		local args=frame:getParent().args;
		local rozwazane=args[1];
		local kod_projektu=frame:getParent().args["kod projektu"];
		local kod_jezyka=frame:getParent().args["kod języka"];
		local kod=((kod_projektu) and (kod_projektu~=""))and (kod_projektu..":") or "";
	    local kod=((kod_jezyka) and (kod_jezyka~=""))and (kod..(kod_jezyka..":")) or kod;
		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]:","");
			return Parametry(args,"#invoke","[["..kod.."Module:"..nazw.."|"..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][Łł]:","");
			     return Parametry(args,"#invoke","[["..kod.."Module:"..nazw.."|"..nazw.."]]");
			else
			    rozwazane=mw.ustring.gsub(rozwazane,"^:","");
			    return Parametry(args,"#invoke","[["..kod.."Module:"..rozwazane.."|"..rozwazane.."]]");
			end;
		end;
	end,
}
return p;