Moduł:Licencja

Z Wikibooks, biblioteki wolnych podręczników.
 Dokumentacja modułu [stwórz] [odśwież]
return{
["Licencja"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local nazwy_modul=require("Module:Nazwy");
	local pudelko_modul=require("Module:Pudełko");
	local pf=parametry_modul.PobierzFrameEwentualnieParent(frame);
	local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw 2"](frame);
	local nazwa_jednostki=pudelko_modul["Nazwa jednostki 2"](frame);
	local uchwyt_strony=mw.title.makeTitle(nazwa_przestrzeni_nazw,nazwa_jednostki);
	uchwyt_strony=((uchwyt_strony)and(uchwyt_strony.exists))and uchwyt_strony or mw.title.getCurrentTitle();
	
	local typ_jednostki=pudelko_modul["Typ jednostki 2"]{args={
		["obsługiwane jednostki jako nieopisowe strony"]="tak",
		["nazwa przestrzeni nazw"]=uchwyt_strony.nsText,
		["nazwa jednostki"]=uchwyt_strony.text,
	},};
	local typ_strony_w_nawiasach;
	if(typ_jednostki=="artykuł")then 
		typ_strony_w_nawiasach="(artykuły)";
	elseif(typ_jednostki=="artykuł dla dzieci")then 
		typ_strony_w_nawiasach="(artykuły dla dzieci)";
	elseif(typ_jednostki=="strona użytkownika")then
		typ_strony_w_nawiasach="(strony użytkowników)";
	elseif(typ_jednostki=="strona brudnopisu projektu")then
		typ_strony_w_nawiasach="(strony brudnopisu projektu)";
	else
		typ_strony_w_nawiasach="(strony niepodręcznikowe)";
	end;
	local licencja_z_parametrami=frame.args["licencja z parametrami"];
	local licencja_bez_parametrow=frame.args["licencja bez parametrów"];
	
	local naglowek_licencji=frame.args["nagłówek licencji"];
	local kategoria_licencji_z_oczekiwanym_naglowkiem=frame.args["kategoria licencji z oczekiwanym nagłówkiem"] and string.format(frame.args["kategoria licencji z oczekiwanym nagłówkiem"],typ_strony_w_nawiasach) or nil;
	local kategoria_licencji_bez_oczekiwanego_naglowka=frame.args["kategoria licencji bez oczekiwanego nagłówka"] and string.format(frame.args["kategoria licencji bez oczekiwanego nagłówka"],typ_strony_w_nawiasach) or nil;
	
	local function missingHeader(pattern, naglowek_licencji,czy_bez_parametrow)
		local stronicowyparser_modul=require("Module:StronicowyParser");
		local spreparowany_wikikod_strony=stronicowyparser_modul.SpreparowanyWikikodStrony(uchwyt_strony.fullText,true);
		
		local czy_dopasowano_wedlug_wzorca;
		local szablon=frame.args["szablon"];
		if(not parametry_modul.CzyTak(szablon))then
			czy_dopasowano_wedlug_wzorca=mw.ustring.match(spreparowany_wikikod_strony, pattern);
		else
			local szablonowe_modul=require("Module:Szablonowe")
			czy_dopasowano_wedlug_wzorca=parametry_modul.CzyTak(szablonowe_modul["SprawdzanieCzyWystępujeDanySzablonWTekście"]{["tekst"]=spreparowany_wikikod_strony,["wzór"]=pattern,["szablon"]=szablon,["z parametrami"]=not czy_bez_parametrow,});
		end;
		return
			pattern -- wymagany wzór na wyszukiwanie wywołania z nagłówkiem
			and naglowek_licencji-- wymagany nagłówek do wstawienia
			and pattern~="" --wyrażenie regularne do sprawdzania, czy występują oczekiwane niepuste nagłówki sekcji
			and naglowek_licencji~="" --wstawiany nagłówek sekcji, gdy nie ma oczekiwanych niepustych nagłówków
			and not czy_dopasowano_wedlug_wzorca;
	end;
	
	local pf=frame:getParent();
	local args=pf.args;
    local ze_zwracanymi_kategoriami=not parametry_modul.CzyTak{[1]=args["bez kategorii"],};
    local result={};
	local function cat(kategoria_licencji_z_oczekiwanym_naglowkiem, kategoria_licencji_bez_oczekiwanego_naglowka)
		local sprawdz_modul=require("Module:Sprawdź");
		local czy_bez_parametrow=sprawdz_modul["bez parametrów"](frame);
	    local pattern=czy_bez_parametrow and licencja_bez_parametrow or licencja_z_parametrami;
	    local naglowek_przypisow_lub_grupy_przypisow=(((not group)and(naglowek_przypisow)) or (group and(naglowek_grupy_przypisow)))
		if missingHeader(pattern,naglowek_licencji,czy_bez_parametrow) then
			if((not args["stopień nagłówka"])or((args["stopień nagłówka"])and(mw.ustring.find(args["stopień nagłówka"],"^=+$"))))then
				table.insert(result, naglowek_licencji)
				table.insert(result, "\n")
			end;
		    if ze_zwracanymi_kategoriami then
				if(parametry_modul.CzyTak(kategoria_licencji_bez_oczekiwanego_naglowka))then
					table.insert(result,frame:preprocess(kategoria_licencji_bez_oczekiwanego_naglowka))
				end;
			end;
		elseif ze_zwracanymi_kategoriami then
			if(parametry_modul.CzyTak(kategoria_licencji_z_oczekiwanym_naglowkiem))then
					table.insert(result,frame:preprocess(kategoria_licencji_z_oczekiwanym_naglowkiem))
			end;
		end;
	end;
	cat(kategoria_licencji_z_oczekiwanym_naglowkiem,kategoria_licencji_bez_oczekiwanego_naglowka);
	----
	local stronicowyparser_modul=require("Module:StronicowyParser");
	local tekst_licencji=stronicowyparser_modul["WstępDoLicencji"]{args={[1]=args["Autor"] or "[[Wikipedysta:Użytkownik|Użytkownik]]",[2]=args["Ukończone szkoły"],[3]=args["Email"],[4]=args["Dotyczy"],[5]=args["Licencjonowanie"],[6]=args["Umowa prawna"],[7]=args["Konsekwencje"],}};
	table.insert(result,tekst_licencji);
	return table.concat(result);
end;
}