Moduł:Ramka

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania
Template-info.png Dokumentacja modułu [stwórz] [odśwież]
return {
	["Wywołaj"]=function(frame)
		local d=frame:preprocess(frame.args[1])
		return d
	end,
	["Powtarzaj"]=function(frame)
		local pf=frame:getParent();
		local j=0
		for index,_ in pairs(pf.args) do
			if(type(index)=="number")then
				j=j+1;
			end;
		end;
		if(tonumber(frame.args[1])>j)then return "";end;
		local text=frame.args[2];
		local strings={};
		for i=tonumber(frame.args[1]),j,1 do
			local strings2=mw.ustring.gsub(text,"{{_}}%s*%+%s*1",i+1);
			strings2=mw.ustring.gsub(strings2,"{{_}}",i);
		    strings2=mw.ustring.gsub(strings2,"{{__}}%s*%+%s*1","&#_a"..(i+1)..";");
			strings2=mw.ustring.gsub(strings2,"{{__}}","&#_a"..i..";");
			strings2=mw.ustring.gsub(strings2,"{{___}}%s*%+%s*1","&#_t"..(i+1)..";");
			strings2=mw.ustring.gsub(strings2,"{{___}}","&#_t"..i..";");
		    strings[#strings+1]=strings2;
		end;
		if(#strings==0)then return "";end;
		local cal={
			["{"]="{{(}}",
		    ["}"]="{{)}}",
		    ["="]="{{=}}",
		    ["|"]="{{!}}",
		    ["%"]="%%",
		};
		local d=0;
		for r=1,#strings,1 do
			local s=0;
			while mw.ustring.match(strings[r],"{{{[^{}]+}}}") do
				s=s+1;
				strings[r]=mw.ustring.gsub(strings[r],"{{{([^{}]+)}}}","&#_p"..s..";%1&#_k"..s..";");
			end;
			d=math.max(d,s);
		end;
		local p=0;
		local strings3={};
		while true do
			local strings2={};
			for s=1,#strings,1 do
				strings2[s]=strings[s];
			end;
			if(p>0)then
				  if(((frame.args["przedrostek"..p]==nil)or(frame.args["przedrostek"..p]==""))and((frame.args["przyrostek"..p]==nil)or(frame.args["przyrostek"..p]=="")))then 
				       break;
				  end;
		    end;
			if(d>0)then
				for k=d,1,-1 do
					for name,value in pairs(pf.args)do
						value=mw.text.trim(value);
						value=frame:preprocess(value);
						value=mw.ustring.gsub(value,".",cal);
						local value2=value;
						if(p>0)then
						    value=(((frame.args["przedrostek"..p]~=nil)and(frame.args["przedrostek"..p]~="")) and frame.args["przedrostek"..p] or "")
						          ..(((frame.args["przedodstęp"..p]~=nil)and (frame.args["przedodstęp"..p]~=""))and " " or "")
						             ..value..(((frame.args["przyodstęp"..p]~=nil)and (frame.args["przyodstęp"..p]~=""))and " " or "")
						                  ..(((frame.args["przyrostek"..p]~=nil)and(frame.args["przyrostek"..p]~="")) and frame.args["przyrostek"..p] or "");
						                  mw.log(value);
						end;
						for r=1,#strings,1 do
						   strings2[r]=mw.ustring.gsub(strings2[r],"&#_p"..k..";%s*"..name.."%s*&#_k"..k..";",value);
						   strings2[r]=mw.ustring.gsub(strings2[r],"&#_p"..k..";%s*"..name.."%s*|.-&#_k"..k..";",value);
						   strings2[r]=mw.ustring.gsub(strings2[r],"&#_p"..k..";%s*&#_a"..name..";%s*&#_k"..k..";",value2);
						   strings2[r]=mw.ustring.gsub(strings2[r],"&#_p"..k..";%s*&#_a"..name..";%s*|.-&#_k"..k..";",value2);
						   if(p==0)then
						        strings2[r]=mw.ustring.gsub(strings2[r],"&#_t"..name..";","");
						   else
						   	    strings2[r]=mw.ustring.gsub(strings2[r],"&#_t"..name..";","true");
						   end;
						end;
					end;
					for r=1,#strings,1 do
						strings2[r]=mw.ustring.gsub(strings2[r],"&#_p"..k..";(.-)&#_k"..k..";","{{{%1}}}");
					end;
				end;
				for r=1,#strings,1 do
				    strings3[r]=((strings3[r])and strings3[r] or "")..strings2[r];
				end;
			end;	
			p=p+1;
		end;
		local str="";
		for r=1,#strings,1 do
			str=str..((strings3[r])and strings3[r] or strings[r]);
		end;
		local d=frame:preprocess(str);
		return d;
	end,
}