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, 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 Szablon(args,klucz_projektu,modyfikator,rozwazana_nazwa_strony,odstepy_po)
	local parametry_modul=require("Module:Parametry");
	local nazwa=rozwazana_nazwa_strony;
	rozwazana_nazwa_strony=parametry_modul["Odstępy"]{[1]=rozwazana_nazwa_strony,[2]="tak",};
	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_kanoniczna=mw.ustring.match(rozwazana_nazwa_strony,"^:?("..wzor_szablon_kanoniczna..":)");
	if(template_kanoniczna)then
		 local adres_strony,_=mw.ustring.gsub(rozwazana_nazwa_strony,"^:?"..wzor_szablon_kanoniczna..":","");
		 local nazwa_strony=mw.getContentLanguage():ucfirst(adres_strony);
		 nazwa=mw.ustring.match(nazwa,"^:?[^:]*:(.*)$");
		 return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]="Template:"..nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",}..odstepy_po);
	else
		local template_niekanoniczna=mw.ustring.match(rozwazana_nazwa_strony,"^:?("..wzor_szablon_niekanoniczna..":)");
	    if(template_niekanoniczna)then
		    local adres_strony,_=mw.ustring.gsub(rozwazana_nazwa_strony,"^:?"..wzor_szablon_niekanoniczna..":","");
		    local nazwa_strony=mw.getContentLanguage():ucfirst(adres_strony);
		    nazwa=mw.ustring.match(nazwa,"^:?[^:]*:(.*)$");
			return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]="Template:"..nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",}..odstepy_po);
	    else
	    	local template_po_polsku=not czy_biezaca and mw.ustring.match(rozwazana_nazwa_strony,"^:?("..wzor_szablon_po_polsku..":)") or nil;
	    	if(template_po_polsku)then
		    	local adres_strony,_=mw.ustring.gsub(rozwazana_nazwa_strony,"^:?"..wzor_szablon_po_polsku..":","");
		    	local nazwa_strony=mw.getContentLanguage():ucfirst(adres_strony);
		    	nazwa=mw.ustring.match(nazwa,"^:?[^:]*:(.*)$");
				return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]="Template:"..nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",}..odstepy_po);
	        else
				local template_main=mw.ustring.match(rozwazana_nazwa_strony,"^:");
				if(not template_main)then
			    	local nazwa_przestrzeni=require("Module:Nazwy")["NAZWAPRZESTRZENI"](rozwazana_nazwa_strony);
                	if((nazwa_przestrzeni~="Szablon")and(nazwa_przestrzeni~=""))then
               	    	 local pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"](rozwazana_nazwa_strony);
               	  		return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]=pelna_nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",}..odstepy_po);
			    	else
			 			local adres_strony,_=mw.ustring.gsub(rozwazana_nazwa_strony,"^:","");
			 	    	local nazwa_strony=mw.getContentLanguage():ucfirst(adres_strony);
			 	    	nazwa,_=mw.ustring.gsub(nazwa,"^:","");
			 			return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]="Template:"..nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",}..odstepy_po);
			 		end;
				else
			        local nazwa_przestrzeni=require("Module:Nazwy")["NAZWAPRZESTRZENI"](rozwazana_nazwa_strony);
			        local pelna_nazwa_strony=require("Module:Nazwy")["PEŁNANAZWASTRONY"](rozwazana_nazwa_strony);
			        nazwa,_=mw.ustring.gsub(nazwa,"^:","");
			        if(nazwa_przestrzeni~="")then
			 			return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]=pelna_nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",}..odstepy_po);
			 		else
			 			return Parametry(args,modyfikator..":"..require("Module:Linki")["Link wewnętrzny"]{["klucz projektu"]=klucz_projektu,["strona"]=pelna_nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania,}..odstepy_po);
			 		end;
				end;
			end;
		end
	end;
end;
local function Modul(args,klucz_projektu, modyfikator, rozwazana_nazwa_strony,odstepy_po)
	local nazwa=rozwazana_nazwa_strony;
	local parametry_modul=require("Module:Parametry");
	rozwazana_nazwa_strony=parametry_modul["Odstępy"]{[1]=rozwazana_nazwa_strony,[2]="tak",};
	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 module_kanoniczna=mw.ustring.match(rozwazana_nazwa_strony,"^:?("..wzor_modul_kanoniczna..":)");
	local bez_znacznikow=args["bez znaczników"];
	local bez_przetwarzania=args["bez przetwarzania"];
	if(module_kanoniczna)then
	    local adres_strony,_=mw.ustring.gsub(rozwazana_nazwa_strony,"^:?"..wzor_modul_kanoniczna..":","");
	    local nazwa_strony=mw.getContentLanguage():ucfirst(adres_strony);
	    nazwa=mw.ustring.match(nazwa,"^:?[^:]*:(.*)$");
		return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="Module:"..nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",},}..odstepy_po);
	else
	    local module_niekanoniczna=mw.ustring.match(rozwazana_nazwa_strony,"^:?("..wzor_modul_niekanoniczna..":)");
	    if(module_niekanoniczna)then
			 local adres_strony,_=mw.ustring.gsub(rozwazana_nazwa_strony,"^:?"..wzor_modul_niekanoniczna..":","");
			 local nazwa_strony=mw.getContentLanguage():ucfirst(adres_strony);
			 nazwa=mw.ustring.match(nazwa,"^:?[^:]*:(.*)$");
			 return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="Module:"..nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",},}..odstepy_po);
	    else
	    	 local module_po_polsku=not czy_biezaca and mw.ustring.match(rozwazana_nazwa_strony,"^:?("..wzor_modul_po_polsku..":)") or nil;
	    	 if(module_po_polsku)then
				local adres_strony,_=mw.ustring.gsub(rozwazana_nazwa_strony,"^:?"..wzor_modul_po_polsku..":","");
				local nazwa_strony=mw.getContentLanguage():ucfirst(adres_strony);
				nazwa=mw.ustring.match(nazwa,"^:?[^:]*:(.*)$");
				return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="Module:"..nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",},}..odstepy_po);
	         else
			    local adres_strony=mw.ustring.gsub(rozwazana_nazwa_strony,"^:","");
				local nazwa_strony=mw.getContentLanguage():ucfirst(adres_strony);
				nazwa,_=mw.ustring.gsub(nazwa,"^:","");
				return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="Module:"..nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",},}..odstepy_po);
			end;
	    end;
    end;	
end;
local function int(args,klucz_projektu,modyfikator,rozwazana_nazwa_strony,odstepy_po)
	local nazwa=rozwazana_nazwa_strony;
	local parametry_modul=require("Module:Parametry");
	rozwazana_nazwa_strony=parametry_modul["Odstępy"]{[1]=rozwazana_nazwa_strony,[2]="tak",};
	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="MediaWiki";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_kanoniczna=mw.ustring.match(rozwazana_nazwa_strony,"^:?("..wzor_mediawiki_kanoniczna..":)");
	local bez_znacznikow=args["bez znaczników"];
	local bez_przetwarzania=args["bez przetwarzania"];
	if(mediawiki_kanoniczna)then
		local adres_strony,_=mw.ustring.gsub(rozwazana_nazwa_strony,"^:?"..wzor_mediawiki_kanoniczna..":","");
		local nazwa_strony=mw.getContentLanguage():ucfirst(adres_strony);				
		nazwa=mw.ustring.match(nazwa,"^:?[^:]*:(.*)$");
		return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="MediaWiki:"..nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",},}..odstepy_po);
	else
		local mediawiki_niekanoniczna=mw.ustring.match(rozwazana_nazwa_strony,"^:?("..wzor_mediawiki_niekanoniczna..":)");
	    if(mediawiki_niekanoniczna)then
			 local adres_strony,_=mw.ustring.gsub(rozwazana_nazwa_strony,"^:?"..wzor_mediawiki_niekanoniczna..":","");
			 local nazwa_strony=mw.getContentLanguage():ucfirst(adres_strony);
			 nazwa=mw.ustring.match(nazwa,"^:?[^:]*:(.*)$");
			 return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="MediaWiki:"..nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",},}..odstepy_po);
	    else
			local mediawiki_po_polsku=not czy_biezaca and mw.ustring.match(rozwazana_nazwa_strony,"^:?("..wzor_mediawiki_po_polsku..":)") or nil;
	    	if(mediawiki_po_polsku)then
	    		local adres_strony,_=mw.ustring.gsub(rozwazana_nazwa_strony,"^:?"..wzor_mediawiki_po_polsku..":","");
				local nazwa_strony=mw.getContentLanguage():ucfirst(adres_strony);
				nazwa=mw.ustring.match(nazwa,"^:?[^:]*:(.*)$");
				return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="MediaWiki:"..nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",},}..odstepy_po);
	    	else
				local adres_strony=mw.ustring.gsub(rozwazana_nazwa_strony,"^:","");
				local nazwa_strony=mw.getContentLanguage():ucfirst(adres_strony);
				nazwa,_=mw.ustring.gsub(nazwa,"^:","");
				return Parametry(args,modyfikator..require("Module:Linki")["Link wewnętrzny"]{args={["klucz projektu"]=klucz_projektu,["strona"]="MediaWiki:"..nazwa_strony,["nazwa"]=nazwa,["bez znaczników"]=bez_znacznikow,["bez przetwarzania"]=bez_przetwarzania or "tak",},}..odstepy_po);
			 end;
	    end;
	end;	
end;
local function ModyfikatorArgumentuPierwszego(argument)
	local modyfikator;local rozwazana_nazwa_strony;local odstepy_po;
	modyfikator,rozwazana_nazwa_strony,odstepy_po=mw.ustring.match(argument,"^(%s*)([^:]-)(%s*)$");
	if(modyfikator and rozwazana_nazwa_strony and odstepy_po)then
    	return modyfikator,rozwazana_nazwa_strony,odstepy_po,1;
    end;
	
	local function ModyfikatoryUzupelniajace(argument)
			modyfikator,rozwazana_nazwa_strony=mw.ustring.match(argument,"^(%s*safesubst%s*:%s*)(.-)$");
			if(modyfikator and rozwazana_nazwa_strony)then return modyfikator,rozwazana_nazwa_strony,odstepy_po;end;
    		modyfikator,rozwazana_nazwa_strony=mw.ustring.match(argument,"^(%s*subst%s*:%s*)(.-)$");
    		if(modyfikator and rozwazana_nazwa_strony)then return modyfikator,rozwazana_nazwa_strony,odstepy_po;end;
    		modyfikator,rozwazana_nazwa_strony=mw.ustring.match(argument,"^(%s*raw%s*:%s*)(.-)$");
    		if(modyfikator and rozwazana_nazwa_strony)then return modyfikator,rozwazana_nazwa_strony,odstepy_po;end;
    		modyfikator,rozwazana_nazwa_strony=mw.ustring.match(argument,"^(%s*)(.-)$");
    		return modyfikator,rozwazana_nazwa_strony;
	end;
	local function ModyfikatoryStron(argument)
		  local modyfikator;local rozwazana_nazwa_strony;local odstepy_po;
		  modyfikator,rozwazana_nazwa_strony,odstepy_po=mw.ustring.match(argument,"^(%s*raw%s*:%s*)(.-)(%s*)$");
    	  if(modyfikator and rozwazana_nazwa_strony and odstepy_po)then return modyfikator,rozwazana_nazwa_strony,odstepy_po,1;end;
    	  modyfikator,rozwazana_nazwa_strony,odstepy_po=mw.ustring.match(argument,"^(%s*msgnw%s*:%s*)(.-)(%s*)$");
    	  if(modyfikator and rozwazana_nazwa_strony and odstepy_po)then return modyfikator,rozwazana_nazwa_strony,odstepy_po,1;end;
    	  modyfikator,rozwazana_nazwa_strony,odstepy_po=mw.ustring.match(argument,"^(%s*msg%s*:%s*)(.-)(%s*)$");
    	  if(modyfikator and rozwazana_nazwa_strony and odstepy_po)then return modyfikator,rozwazana_nazwa_strony,odstepy_po,1;end;
    	  modyfikator,rozwazana_nazwa_strony,odstepy_po=mw.ustring.match(argument,"^(%s*#%s*invoke%s*:%s*)(.-)(%s*)$");
    	  if(modyfikator and rozwazana_nazwa_strony and odstepy_po)then return modyfikator,rozwazana_nazwa_strony,odstepy_po,2;end;
    	  modyfikator,rozwazana_nazwa_strony,odstepy_po=mw.ustring.match(argument,"^(%s*int%s*:%s*)(.-)(%s*)$");
    	  if(modyfikator and rozwazana_nazwa_strony and odstepy_po)then return modyfikator,rozwazana_nazwa_strony,odstepy_po,3;end;
    	  modyfikator,rozwazana_nazwa_strony,odstepy_po=mw.ustring.match(argument,"^(%s*)(.-)(%s*)$");
    	  return modyfikator,rozwazana_nazwa_strony,odstepy_po,1;
	end;
    local modyfikator_1,rozwazana_nazwa_strony_1=ModyfikatoryUzupelniajace(argument);
    local modyfikator_2,rozwazana_nazwa_strony_2,odstepy_po,rodzaj=ModyfikatoryStron(rozwazana_nazwa_strony_1);
    
    return modyfikator_1..modyfikator_2,rozwazana_nazwa_strony_2,odstepy_po,rodzaj;
end;
local p={
	["S"] = function(frame)
		local parametry_modul=require("Module:Parametry");
		local args=parametry_modul.PobierzArgsParametry(frame);
		local argument_pierwszy=((args[1])and (args[1]~=""))and args[1] or "Nieznany szablon";
		local klucz_projektu=args["klucz projektu"] or args["k"];

        local modyfikator,rozwazana_nazwa_strony,odstepy_po,rodzaj=ModyfikatorArgumentuPierwszego(argument_pierwszy);
           
        if(not parametry_modul["CzyTakCiąg"](rozwazana_nazwa_strony))then rozwazana_nazwa_strony="Nieznany szablon";end;
           
		if(rodzaj==2)then
             return Modul(args,klucz_projektu, modyfikator, rozwazana_nazwa_strony, odstepy_po);
		elseif(rodzaj==1)then
			return Szablon(args,klucz_projektu,modyfikator, rozwazana_nazwa_strony,odstepy_po);
	    elseif(rodzaj==3) then
             return int(args,klucz_projektu,modyfikator,rozwazana_nazwa_strony,odstepy_po);
		else
			return Szablon(args,klucz_projektu,modyfikator,rozwazana_nazwa_strony,odstepy_po);
		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 odstepy_przed,odstepy_po=mw.ustring.match(rozwazana_nazwa_strony,"^(%s*).-(%s*)$");
		
		local odstepy_przed,rozwazana_nazwa_strony,odstepy_po=mw.ustring.match(rozwazana_nazwa_strony,"^(%s*)(.-)(%s*)$");
		
        return Modul(args,klucz_projektu,odstepy_przed.."#invoke:",rozwazana_nazwa_strony, odstepy_po);
	end,
}
return p;