Przejdź do zawartości

Moduł:StronicowyParser/NumeracjaObiektówStron

Z Wikibooks, biblioteki wolnych podręczników.
 Dokumentacja modułu [stwórz] [odśwież]
local p={};
function p.SprawdzanieReferencji(self,tablica_zmiennych,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu)
    local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
    if((not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu2))or(nazwa_artykulu==""))then
    	for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie in ipairs(link_obiekt_lub_wypowiedzenie) do
   			local czy_uchwyty_nie_sa_ponumerowane=true;
    		for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie2 in ipairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu1]) do
            	if(elementy_w_tablicy_obiekt_lub_wypowiedzenie==elementy_w_tablicy_obiekt_lub_wypowiedzenie2[1])then
               		if(elementy_w_tablicy_obiekt_lub_wypowiedzenie2[2])then
               			czy_uchwyty_nie_sa_ponumerowane=false;
                		break;
                    end;
            	end;
    		end;
        	if(czy_uchwyty_nie_sa_ponumerowane)then
        		local czy_tylko_ze_znakami_odstepu_lub_puste=mw.ustring.match(elementy_w_tablicy_obiekt_lub_wypowiedzenie,"^%s*$");
        		if(czy_tylko_ze_znakami_odstepu_lub_puste)then
        	    	if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu1,1)) then
                		stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu1,1);
                	end;
                	return;
        		elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu2))then
            		stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu2);
                    return;
            	end;
        	end;
    	end;
    end;
end;
function p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja)
   for _,element_w_podtablicy_kategorii_bledow in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
   	    local element_obiekty=element_w_podtablicy_kategorii_bledow[1];
		tabela_listy_danych_analizy_ksiazki=p.SprawdzanieOrazNumerowanieElementowychFormStrony(self,dane_artykulu,biezacy_artykul,element_obiekty,numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja);
   end;
end;
function p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,nazwa_artykulu2)
	 local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	 local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	 local parametry_modul=require("Module:Parametry");
	 -----
	 local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
	 -----
	 for nazwa_przestrzeni,tablica_nazw_przestrzeni_ksiazek in pairs(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)do
	 	for nazwa_przestrzeni_ksiazki, tablica_nazw_ksiazek in pairs(tablica_nazw_przestrzeni_ksiazek)do
			for nazwa_ksiazki,tablica_nazw_artykulow in pairs(tablica_nazw_ksiazek)do
				 local tablica_artykulow={};
				 local tab_ksiazki=tablica_nazw_artykulow.spis;
				 local czy_da_sie_numerowac_obiekty_ze_spisem_tresci=false;
     			 if(tab_ksiazki)then
     				local i=1;
     				for _,tab_rozdzialu in pairs(tab_ksiazki)do
     					if(tab_rozdzialu[2])then
     						for _,tab_dane_nazwa_artykulu_spisu in ipairs(tab_rozdzialu[2])do
     							 local czy_tabelka_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_dane_nazwa_artykulu_spisu[1]);
     							 local tab_nazwa_artukulu_link=czy_tabelka_artykulu and tab_dane_nazwa_artykulu_spisu[1][1] or tab_dane_nazwa_artykulu_spisu[1];
     							 local artykul=stronicowyparser_potrzebne_modul.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_nazwa_artukulu_link);
     							 if(artykul)then
     							 	tablica_artykulow[artykul]=i;
     							 	i=i+1;
     							 end;
     						end;
     					end;
	     			end;
	     			if(parametry_modul["CzySąElementyTablicy"](tablica_artykulow))then
						czy_da_sie_numerowac_obiekty_ze_spisem_tresci=true;
    				end;
 		   		end;
    			for nazwa_artykulu, dane_artykulu in pairs(tablica_nazw_artykulow.lista_podstron_woluminu) do
    		    	local biezacy_artykul=dane_artykulu.artykul_biezacy;
    				local numer_obiektu_w_ksiazce=tablica_artykulow[nazwa_artykulu] or 0;
     				local function Problemy_z_doloczonymi_uchywtami(nazwa_obiektu)
     					  stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"błędy uchwytów dołączonych stron",nazwa_obiektu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
	     			end;
    	 			if((czy_da_sie_numerowac_obiekty_ze_spisem_tresci)and(nazwa_artykulu~=""))then
     					p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self,dane_artykulu,biezacy_artykul,numer_obiektu_w_ksiazce,stronicowyparser_obiekty_modul,Problemy_z_doloczonymi_uchywtami);
    				else
            			p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self,dane_artykulu,biezacy_artykul,0,stronicowyparser_obiekty_modul,Problemy_z_doloczonymi_uchywtami);
	     	    	end;
	        	end;
			end;
		end;
	 end;
    for _,obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
     	local obiekt2=obiekt[1];
        p.SprawdzanieReferencji(self,tablica_zmiennych,tablica_zmiennych.linkobiekt[obiekt2],obiekt2,"Link"..obiekt2, nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,nazwa_artykulu2);
    end;
    return tabela_listy_danych_analizy_ksiazki;
end;
function p.SprawdzanieOrazNumerowanieElementowychFormStrony(self, dane_artykulu, biezacy_artykul, nazwa_obiektu, numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja)
	local parametry_modul=require("Module:Parametry");
	if(not dane_artykulu.uchwyty_i_numeracje)then return;end;
	local tabela_obiektu=dane_artykulu.uchwyty_i_numeracje[nazwa_obiektu];
	if(not tabela_obiektu)then return;end;

	if(stronicowyparser_obiekty_modul.nienumerowane_z_uchwytami_szablony_wprowadzenia_tekstu[nazwa_obiektu])then
		return tabela_listy_danych_analizy_ksiazki;
	end;
	local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
	
	for licznik,element_obiektu in pairs(tabela_obiektu)do
    	local czy_numerowac=true;
		for licznik2=1, licznik-1,1 do
   	    	if((tabela_obiektu[licznik2][1])and(element_obiektu[1]==tabela_obiektu[licznik2][1]))then
            	if(biezacy_artykul)then
            		if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu))then
                		stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu);
                	end;
            	else
					__Funkcja(nazwa_obiektu);
            	end;
            	tabela_obiektu[licznik2][2]=nil;
            	czy_numerowac=false;
            	break;
        	end;
		end;
    	if(czy_numerowac)then
      		if(numer_artykulu_w_ksiazce>0)then
      			element_obiektu[2]=numer_artykulu_w_ksiazce.."."..licznik;
      		elseif(numer_artykulu_w_ksiazce==0)then
      			element_obiektu[2]=licznik;
    		elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
            	stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
      		end;	
    	end;
	end;
   return tabela_listy_danych_analizy_ksiazki;
end;
return p;