Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.16 first-letter Media Specjalna Dyskusja Wikipedysta Dyskusja wikipedysty Wikibooks Dyskusja Wikibooks Plik Dyskusja pliku MediaWiki Dyskusja MediaWiki Szablon Dyskusja szablonu Pomoc Dyskusja pomocy Kategoria Dyskusja kategorii Wikijunior Dyskusja Wikijuniora TimedText TimedText talk Moduł Dyskusja modułu Wydarzenie Dyskusja wydarzenia Szablon:LinkObiekt 10 44981 552780 546667 2026-08-22T04:50:11Z Persino 2851 552780 wikitext text/x-wiki <includeonly>{{#invoke:StronicowyParser|Numer{{LinkObiekt/typ|cecha=funkcja|typ={{{typ|obiekt}}}}} | {{#ifeq:{{{nazwa książki|{{{3|}}}}}}|{{{nazwa książki|{{{3}}}}}}|nazwa książki|void1}} = {{{nazwa książki|{{{3|}}}}}} | {{#ifeq:{{{nazwa artykułu|{{{2|}}}}}}|{{{nazwa artykułu|{{{2}}}}}}|nazwa artykułu|void2}} = {{{nazwa artykułu|{{{2|}}}}}} | uchwyt = {{{uchwyt|{{{1|}}}}}} | id = {{LinkObiekt/typ|cecha=id|typ={{{typ|obiekt}}}}} | przedrostek = {{LinkObiekt/typ|cecha=skrót|typ={{{typ|obiekt}}}}}{{#switch:{{{typ|obiekt}}}|wzór=|#default=&nbsp;}} | skrót = {{{skrót|{{{4}}}}}} | łącznik = {{{łącznik|{{{5|-}}}}}} | obiekt = link | bez automatu = {{{bez automatu|}}} | klasa = {{#if:{{#invoke:StronicowyParser|formatowanie}}|fonty_rodzina_sans fonty_link{{LinkObiekt/typ|cecha=id|typ={{{typ|obiekt}}}}}}} | styl = {{Jeśli niepuste|{{{czcionka|}}}|przed lewy=font:|po lewy=;}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozmiar czcionki|}}}|przed lewy=font-size:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wysokość linii czcionki|}}}|przed lewy=line-height:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rodzina czcionki|}}}|przed lewy=font-family:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wariant czcionki|}}}|przed lewy=font-variant:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozciągnięcie czcionki|}}}|przed lewy=font-stretch:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{waga czcionki|}}}|przed lewy=font-weight:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{styl czcionki|}}}|przed lewy=font-style:|po lewy=;}}}} }}{{#if:{{{bez kategorii stronicowych|}}}{{{bez automatu|}}}||{{#invoke:StronicowyParser|WstawKategorie|{{{uchwyt|{{{1|}}}}}}|Link{{LinkObiekt/typ|cecha=nazwa|typ={{{typ|obiekt}}}}}}}}}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Sprawdź|Parametry | = problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s %s do sprawdzenia{{))}} | typ = txt | 1 = txt!;uchwyt | uchwyt = txt!;1 | 2 = ;nazwa artykułu | nazwa artykułu = ;2 | 3 = ;nazwa książki | nazwa książki = ;3 | 4 = ;skrót | skrót = ;4 | 5 = łącznik | łącznik = ;5 | czcionka = | rozmiar czcionki = | wysokość linii czcionki = | rodzina czcionki = | wariant czcionki = | rozciągnięcie czcionki = | waga czcionki = | styl czcionki = | bez automatu = | bez kategorii stronicowych = }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> mjynas2ogy1zrrao56h3kpp0m7xb3cg 552781 552780 2026-08-22T04:53:22Z Persino 2851 552781 wikitext text/x-wiki <includeonly>{{#invoke:StronicowyParser|Numer{{LinkObiekt/typ|cecha=funkcja|typ={{{typ|obiekt}}}}} | {{#ifeq:{{{nazwa książki|{{{3|}}}}}}|{{{nazwa książki|{{{3}}}}}}|nazwa książki|void1}} = {{{nazwa książki|{{{3|}}}}}} | {{#ifeq:{{{nazwa artykułu|{{{2|}}}}}}|{{{nazwa artykułu|{{{2}}}}}}|nazwa artykułu|void2}} = {{{nazwa artykułu|{{{2|}}}}}} | uchwyt = {{{uchwyt|{{{1|}}}}}} | id = {{LinkObiekt/typ|cecha=id|typ={{{typ|obiekt}}}}} | przedrostek = {{LinkObiekt/typ|cecha=skrót|typ={{{typ|obiekt}}}}}{{#switch:{{{typ|obiekt}}}|wzór=|#default=&nbsp;}} | skrót = {{{skrót|{{{4|}}}}}} | łącznik = {{{łącznik|{{{5|-}}}}}} | obiekt = link | bez automatu = {{{bez automatu|}}} | klasa = {{#if:{{#invoke:StronicowyParser|formatowanie}}|fonty_rodzina_sans fonty_link{{LinkObiekt/typ|cecha=id|typ={{{typ|obiekt}}}}}}} | styl = {{Jeśli niepuste|{{{czcionka|}}}|przed lewy=font:|po lewy=;}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozmiar czcionki|}}}|przed lewy=font-size:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wysokość linii czcionki|}}}|przed lewy=line-height:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rodzina czcionki|}}}|przed lewy=font-family:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wariant czcionki|}}}|przed lewy=font-variant:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozciągnięcie czcionki|}}}|przed lewy=font-stretch:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{waga czcionki|}}}|przed lewy=font-weight:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{styl czcionki|}}}|przed lewy=font-style:|po lewy=;}}}} }}{{#if:{{{bez kategorii stronicowych|}}}{{{bez automatu|}}}||{{#invoke:StronicowyParser|WstawKategorie|{{{uchwyt|{{{1|}}}}}}|Link{{LinkObiekt/typ|cecha=nazwa|typ={{{typ|obiekt}}}}}}}}}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Sprawdź|Parametry | = problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s %s do sprawdzenia{{))}} | typ = txt | 1 = txt!;uchwyt | uchwyt = txt!;1 | 2 = ;nazwa artykułu | nazwa artykułu = ;2 | 3 = ;nazwa książki | nazwa książki = ;3 | 4 = ;skrót | skrót = ;4 | 5 = łącznik | łącznik = ;5 | czcionka = | rozmiar czcionki = | wysokość linii czcionki = | rodzina czcionki = | wariant czcionki = | rozciągnięcie czcionki = | waga czcionki = | styl czcionki = | bez automatu = | bez kategorii stronicowych = }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> c2i096s20c6cuzy8uqetfmhpco3l2tq Moduł:StronicowyParser/ZbieranieDanychStron 828 55009 552779 551282 2026-08-22T04:09:44Z Persino 2851 552779 Scribunto text/plain local p={}; function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; local html_modul=require("Module:Html"); kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true); if(kod_uchwytu~="")then KtorySzablonMaZwracacKategorie(kod_uchwytu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=kod_uchwytu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(kod_uchwytu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(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; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tabela_elementow_strony_kodow={}; -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")) if(self)then local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not bez_preprocess))then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; lista_dwuelementowa[2]=tekst; end; --local __metatabelka=getmetatable(tabela_parametrow_szablonu); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany); end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if(pozawoluminowe_strony)then if(not tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron)then local podstrona=nazwy_modul.NAZWASUBPODSTRONY(nazwa_artykulu); podstrona=mw.ustring.gsub(podstrona,"([%u%l])%l+%p*%s*",function(znak) return mw.ustring.upper(znak).."."; end); tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron={podstrona,pozawoluminowe_strony,czy_artykul_korzystany,}; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; ohe0zwtpehy7tv9ulco23rkq5bscaff 552792 552779 2026-08-22T06:35:18Z Persino 2851 552792 Scribunto text/plain local p={}; function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; local html_modul=require("Module:Html"); kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true); if(kod_uchwytu~="")then KtorySzablonMaZwracacKategorie(kod_uchwytu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=kod_uchwytu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(kod_uchwytu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(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; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tabela_elementow_strony_kodow={}; -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")) if(self)then local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not bez_preprocess))then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; lista_dwuelementowa[2]=tekst; end; --local __metatabelka=getmetatable(tabela_parametrow_szablonu); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany); end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if(pozawoluminowe_strony)then if(not tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron)then local strona=nazwy_modul.NAZWASTRONY(nazwa_modulu); local zrostek; local ksiazka,podstrona,artykul=mw.ustring.match(strona,"^([^/]*)/(.*)/([^/]*)$"); if(ksiazka and podstrona and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); podstrona=mw.ustring.gsub(podstrona,"([%u%l])[^/]*/?",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..podstrona..artykul; else local ksiazka,artykul=mw.ustring.match(strona,"^([^/]*)/([^/]*)$"); if(ksiazka and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..artykul; else zrostek=mw.ustring.gsub(strona,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); end; end; tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; kod5t6mv9lehmdv8869sopljzt2plp5 552793 552792 2026-08-22T06:40:18Z Persino 2851 552793 Scribunto text/plain local p={}; function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; local html_modul=require("Module:Html"); kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true); if(kod_uchwytu~="")then KtorySzablonMaZwracacKategorie(kod_uchwytu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=kod_uchwytu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(kod_uchwytu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(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; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tabela_elementow_strony_kodow={}; -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")) if(self)then local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not bez_preprocess))then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; lista_dwuelementowa[2]=tekst; end; --local __metatabelka=getmetatable(tabela_parametrow_szablonu); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany); end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if(pozawoluminowe_strony)then if(not tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron)then local strona=nazwy_modul.NAZWASTRONY(nazwa_modulu); local zrostek; local ksiazka,podstrona,artykul=mw.ustring.match(strona,"^([^/]*)/(.*)/([^/]*)$"); if(ksiazka and podstrona and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); podstrona=mw.ustring.gsub(podstrona,"([%u%l])[^/]*/?",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..podstrona..artykul; else local ksiazka,artykul=mw.ustring.match(strona,"^([^/]*)/([^/]*)$"); if(ksiazka and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..artykul; else zrostek=mw.ustring.gsub(strona,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); end; end; tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.nazwy_woluminowe_stron=tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; 6yr31y1pf6cwqxiay0ujn4uacn1sqsx 552794 552793 2026-08-22T07:26:53Z Persino 2851 552794 Scribunto text/plain local p={}; function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; local html_modul=require("Module:Html"); kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true); if(kod_uchwytu~="")then KtorySzablonMaZwracacKategorie(kod_uchwytu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=kod_uchwytu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(kod_uchwytu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(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; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tabela_elementow_strony_kodow={}; -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")) if(self)then local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not bez_preprocess))then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; lista_dwuelementowa[2]=tekst; end; --local __metatabelka=getmetatable(tabela_parametrow_szablonu); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany); end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu); end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if((pozawoluminowe_strony)and(not czy_artykul_korzystany))then if(not tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron)then local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony; local techniczne_modul=require("Module:Techniczne"); nazwa_modulu_korzystana_bazowa=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_korzystana_bazowa); nazwa_modulu_korzystana_bazowa=mw.ustring.gsub(nazwa_modulu,"^"..nazwa_modulu_korzystana_bazowa.."/",""); local zrostek; local ksiazka,podstrona,artykul=mw.ustring.match(nazwa_modulu_korzystana_bazowa,"^([^/]*)/(.*)/([^/]*)$"); if(ksiazka and podstrona and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); podstrona=mw.ustring.gsub(podstrona,"([%u%l])[^/]*/?",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..podstrona..artykul; else local ksiazka,artykul=mw.ustring.match(nazwa_modulu_korzystana_bazowa,"^([^/]*)/([^/]*)$"); if(ksiazka and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..artykul; else zrostek=mw.ustring.gsub(nazwa_modulu_korzystana_bazowa,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); end; end; tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.nazwy_woluminowe_stron=tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; nckxn0cbqqzmu5wgd44h3c72mbjxyw2 552796 552794 2026-08-22T07:38:42Z Persino 2851 552796 Scribunto text/plain local p={}; function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; local html_modul=require("Module:Html"); kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true); if(kod_uchwytu~="")then KtorySzablonMaZwracacKategorie(kod_uchwytu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=kod_uchwytu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(kod_uchwytu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(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; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tabela_elementow_strony_kodow={}; -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")) if(self)then local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not bez_preprocess))then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; lista_dwuelementowa[2]=tekst; end; --local __metatabelka=getmetatable(tabela_parametrow_szablonu); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany); end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu); end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if((pozawoluminowe_strony)and(not czy_artykul_korzystany))then if(not tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron)then local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony; local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu); tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.nazwy_woluminowe_stron=tablica_danych_nazwy_artykulu.nazwy_woluminowe_stron; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; jqsubsspsuvnliznr4jiavgu7n4lg8g 552798 552796 2026-08-22T07:49:29Z Persino 2851 552798 Scribunto text/plain local p={}; function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; local html_modul=require("Module:Html"); kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true); if(kod_uchwytu~="")then KtorySzablonMaZwracacKategorie(kod_uchwytu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=kod_uchwytu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(kod_uchwytu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(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; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tabela_elementow_strony_kodow={}; -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")) if(self)then local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not bez_preprocess))then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; lista_dwuelementowa[2]=tekst; end; --local __metatabelka=getmetatable(tabela_parametrow_szablonu); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany); end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu); end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if((pozawoluminowe_strony)and(not czy_artykul_korzystany))then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_stron)then local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony; local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_stron={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_stron=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_stron; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; 25as28oo6juy9alwe8r36i146kgrg9h 552801 552798 2026-08-22T07:54:43Z Persino 2851 552801 Scribunto text/plain local p={}; function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; local html_modul=require("Module:Html"); kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true); if(kod_uchwytu~="")then KtorySzablonMaZwracacKategorie(kod_uchwytu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=kod_uchwytu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(kod_uchwytu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(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; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tabela_elementow_strony_kodow={}; -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")) if(self)then local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not bez_preprocess))then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; lista_dwuelementowa[2]=tekst; end; --local __metatabelka=getmetatable(tabela_parametrow_szablonu); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany); end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu); end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if((pozawoluminowe_strony)and(not czy_artykul_korzystany))then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony; local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; 9h75rhdrxap8oxk0vo0kf2ldo7ok9qd 552811 552801 2026-08-22T09:41:56Z Persino 2851 552811 Scribunto text/plain local p={}; function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; local html_modul=require("Module:Html"); kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true); if(kod_uchwytu~="")then KtorySzablonMaZwracacKategorie(kod_uchwytu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=kod_uchwytu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(kod_uchwytu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(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; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local korzystany_wolumin=false; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then korzystany_wolumin=true; if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; else korzystany_wolumin=true; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tabela_elementow_strony_kodow={}; -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")) if(self)then local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not bez_preprocess))then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; lista_dwuelementowa[2]=tekst; end; --local __metatabelka=getmetatable(tabela_parametrow_szablonu); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany); end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu); end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if((pozawoluminowe_strony)and(not czy_artykul_korzystany))then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony; local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; otn06u6iryl6vuuum89k2qnmi6js3fk 552813 552811 2026-08-22T09:54:57Z Persino 2851 552813 Scribunto text/plain local p={}; function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; local html_modul=require("Module:Html"); kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true); if(kod_uchwytu~="")then KtorySzablonMaZwracacKategorie(kod_uchwytu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=kod_uchwytu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(kod_uchwytu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(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; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local korzystany_wolumin=false; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then korzystany_wolumin=true; if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; else korzystany_wolumin=true; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tabela_elementow_strony_kodow={}; -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")) if(self)then local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not bez_preprocess))then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; lista_dwuelementowa[2]=tekst; end; --local __metatabelka=getmetatable(tabela_parametrow_szablonu); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany); end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu); end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony; local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; end; elseif(not korzystany_wolumin)then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modulstronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,true,czy_artykul_korzystany,}; end; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; nao39gbuocloil7vgyyetykrum1fab7 552814 552813 2026-08-22T09:57:49Z Persino 2851 552814 Scribunto text/plain local p={}; function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; local html_modul=require("Module:Html"); kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true); if(kod_uchwytu~="")then KtorySzablonMaZwracacKategorie(kod_uchwytu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=kod_uchwytu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(kod_uchwytu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(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; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local korzystany_wolumin=false; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then korzystany_wolumin=true; if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; else korzystany_wolumin=true; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tabela_elementow_strony_kodow={}; -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")) if(self)then local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not bez_preprocess))then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; lista_dwuelementowa[2]=tekst; end; --local __metatabelka=getmetatable(tabela_parametrow_szablonu); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany); end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu); end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony; local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; end; elseif(not korzystany_wolumin)then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,true,czy_artykul_korzystany,}; end; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; 02h240c5qfqua2hb2juy87jfvn5iy1u Szablon:LinkŚródtytuł/silnik 10 55019 552784 543780 2026-08-22T05:37:15Z Persino 2851 552784 wikitext text/x-wiki <includeonly>{{#ifeq:{{#invoke:StronicowyParser|formatowanie}}|tak|<templatestyles src="Szablon:StronaStart/styles.css" />}}{{#invoke:StronicowyParser|NumerŚródtytułu | {{#ifeq:{{{nazwa książki|{{{3|}}}}}}|{{{nazwa książki|{{{3}}}}}}|nazwa książki|void1}} = {{{nazwa książki|{{{3|}}}}}} | {{#ifeq:{{{nazwa artykułu|{{{2|}}}}}}|{{{nazwa artykułu|{{{2}}}}}}|nazwa artykułu|void2}} = {{{nazwa artykułu|{{{2|}}}}}} | uchwyt = {{{uchwyt|{{{1|}}}}}} | przyrostek = Funkcja:&nbsp; | nazwa szablonu = {{{nazwa szablonu|LinkŚródtytuł}}} | klasa = {{#if:{{#invoke:StronicowyParser|formatowanie}}|fonty_rodzina_sans fonty_linknagłówek}} | styl = {{Jeśli niepuste|{{{czcionka|}}}|przed lewy=font:|po lewy=;}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozmiar czcionki|}}}|przed lewy=font-size:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wysokość linii czcionki|}}}|przed lewy=line-height:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rodzina czcionki|}}}|przed lewy=font-family:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wariant czcionki|}}}|przed lewy=font-variant:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozciągnięcie czcionki|}}}|przed lewy=font-stretch:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{waga czcionki|}}}|przed lewy=font-weight:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{styl czcionki|}}}|przed lewy=font-style:|po lewy=;}}}} | bez automatu = {{{bez automatu|}}} }}<!-- -->{{#if:{{{bez kategorii stronicowych|}}}{{{bez automatu|}}}||{{#invoke:StronicowyParser|WstawKategorie|{{{uchwyt|{{{1|}}}}}}|{{{nazwa szablonu|LinkŚródtytuł}}}}}}}<!-- -->{{#if:{{{bez dodatkowych sprawdzeń|}}}||<!-- -->{{#invoke:Sprawdź|Parametry | =problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s %s do sprawdzenia{{))}} | 1 = txt!;uchwyt | uchwyt = txt!;1 | 2 = ;nazwa artykułu | nazwa artykułu = ;2 | 3 = ;nazwa książki | nazwa książki = ;3 | czcionka = | rozmiar czcionki = | wysokość linii czcionki = | rodzina czcionki = | wariant czcionki = | rozciągnięcie czcionki = | waga czcionki = | styl czcionki = | bez automatu = | bez kategorii stronicowych = }}}}</includeonly><noinclude>{{Dokumentacja|zawartość=To jest szablon pomocniczy szablonów:{{s|LinkŚródtytuł}} i {{s|LinkŚródtytułTutaj}}.}}{{Kategoria|Szablony - silniki}}</noinclude> rs1goaf5xvx9q9pjxa4grzd45zcyka3 552785 552784 2026-08-22T05:38:15Z Persino 2851 552785 wikitext text/x-wiki <includeonly>{{#ifeq:{{#invoke:StronicowyParser|formatowanie}}|tak|<templatestyles src="Szablon:StronaStart/styles.css" />}}{{#invoke:StronicowyParser|NumerŚródtytułu | {{#ifeq:{{{nazwa książki|{{{3|}}}}}}|{{{nazwa książki|{{{3}}}}}}|nazwa książki|void1}} = {{{nazwa książki|{{{3|}}}}}} | {{#ifeq:{{{nazwa artykułu|{{{2|}}}}}}|{{{nazwa artykułu|{{{2}}}}}}|nazwa artykułu|void2}} = {{{nazwa artykułu|{{{2|}}}}}} | uchwyt = {{{uchwyt|{{{1|}}}}}} | przyrostek = Fun.:&nbsp; | nazwa szablonu = {{{nazwa szablonu|LinkŚródtytuł}}} | klasa = {{#if:{{#invoke:StronicowyParser|formatowanie}}|fonty_rodzina_sans fonty_linknagłówek}} | styl = {{Jeśli niepuste|{{{czcionka|}}}|przed lewy=font:|po lewy=;}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozmiar czcionki|}}}|przed lewy=font-size:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wysokość linii czcionki|}}}|przed lewy=line-height:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rodzina czcionki|}}}|przed lewy=font-family:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wariant czcionki|}}}|przed lewy=font-variant:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozciągnięcie czcionki|}}}|przed lewy=font-stretch:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{waga czcionki|}}}|przed lewy=font-weight:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{styl czcionki|}}}|przed lewy=font-style:|po lewy=;}}}} | bez automatu = {{{bez automatu|}}} }}<!-- -->{{#if:{{{bez kategorii stronicowych|}}}{{{bez automatu|}}}||{{#invoke:StronicowyParser|WstawKategorie|{{{uchwyt|{{{1|}}}}}}|{{{nazwa szablonu|LinkŚródtytuł}}}}}}}<!-- -->{{#if:{{{bez dodatkowych sprawdzeń|}}}||<!-- -->{{#invoke:Sprawdź|Parametry | =problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s %s do sprawdzenia{{))}} | 1 = txt!;uchwyt | uchwyt = txt!;1 | 2 = ;nazwa artykułu | nazwa artykułu = ;2 | 3 = ;nazwa książki | nazwa książki = ;3 | czcionka = | rozmiar czcionki = | wysokość linii czcionki = | rodzina czcionki = | wariant czcionki = | rozciągnięcie czcionki = | waga czcionki = | styl czcionki = | bez automatu = | bez kategorii stronicowych = }}}}</includeonly><noinclude>{{Dokumentacja|zawartość=To jest szablon pomocniczy szablonów:{{s|LinkŚródtytuł}} i {{s|LinkŚródtytułTutaj}}.}}{{Kategoria|Szablony - silniki}}</noinclude> cja3iyp66f2qezn73jhes7eq4me5zb6 552786 552785 2026-08-22T05:39:12Z Persino 2851 552786 wikitext text/x-wiki <includeonly>{{#ifeq:{{#invoke:StronicowyParser|formatowanie}}|tak|<templatestyles src="Szablon:StronaStart/styles.css" />}}{{#invoke:StronicowyParser|NumerŚródtytułu | {{#ifeq:{{{nazwa książki|{{{3|}}}}}}|{{{nazwa książki|{{{3}}}}}}|nazwa książki|void1}} = {{{nazwa książki|{{{3|}}}}}} | {{#ifeq:{{{nazwa artykułu|{{{2|}}}}}}|{{{nazwa artykułu|{{{2}}}}}}|nazwa artykułu|void2}} = {{{nazwa artykułu|{{{2|}}}}}} | uchwyt = {{{uchwyt|{{{1|}}}}}} | przyrostek = Tyt.:&nbsp; | nazwa szablonu = {{{nazwa szablonu|LinkŚródtytuł}}} | klasa = {{#if:{{#invoke:StronicowyParser|formatowanie}}|fonty_rodzina_sans fonty_linknagłówek}} | styl = {{Jeśli niepuste|{{{czcionka|}}}|przed lewy=font:|po lewy=;}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozmiar czcionki|}}}|przed lewy=font-size:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wysokość linii czcionki|}}}|przed lewy=line-height:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rodzina czcionki|}}}|przed lewy=font-family:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wariant czcionki|}}}|przed lewy=font-variant:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozciągnięcie czcionki|}}}|przed lewy=font-stretch:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{waga czcionki|}}}|przed lewy=font-weight:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{styl czcionki|}}}|przed lewy=font-style:|po lewy=;}}}} | bez automatu = {{{bez automatu|}}} }}<!-- -->{{#if:{{{bez kategorii stronicowych|}}}{{{bez automatu|}}}||{{#invoke:StronicowyParser|WstawKategorie|{{{uchwyt|{{{1|}}}}}}|{{{nazwa szablonu|LinkŚródtytuł}}}}}}}<!-- -->{{#if:{{{bez dodatkowych sprawdzeń|}}}||<!-- -->{{#invoke:Sprawdź|Parametry | =problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s %s do sprawdzenia{{))}} | 1 = txt!;uchwyt | uchwyt = txt!;1 | 2 = ;nazwa artykułu | nazwa artykułu = ;2 | 3 = ;nazwa książki | nazwa książki = ;3 | czcionka = | rozmiar czcionki = | wysokość linii czcionki = | rodzina czcionki = | wariant czcionki = | rozciągnięcie czcionki = | waga czcionki = | styl czcionki = | bez automatu = | bez kategorii stronicowych = }}}}</includeonly><noinclude>{{Dokumentacja|zawartość=To jest szablon pomocniczy szablonów:{{s|LinkŚródtytuł}} i {{s|LinkŚródtytułTutaj}}.}}{{Kategoria|Szablony - silniki}}</noinclude> 4pknxctkgx0u2485e8wk1jnkm8a3wez 552788 552786 2026-08-22T05:43:45Z Persino 2851 552788 wikitext text/x-wiki <includeonly>{{#ifeq:{{#invoke:StronicowyParser|formatowanie}}|tak|<templatestyles src="Szablon:StronaStart/styles.css" />}}{{#invoke:StronicowyParser|NumerŚródtytułu | {{#ifeq:{{{nazwa książki|{{{3|}}}}}}|{{{nazwa książki|{{{3}}}}}}|nazwa książki|void1}} = {{{nazwa książki|{{{3|}}}}}} | {{#ifeq:{{{nazwa artykułu|{{{2|}}}}}}|{{{nazwa artykułu|{{{2}}}}}}|nazwa artykułu|void2}} = {{{nazwa artykułu|{{{2|}}}}}} | uchwyt = {{{uchwyt|{{{1|}}}}}} | przyrostek = Tyt.:&nbsp; | skrót = {{{skrót|}}} | łącznik = {{{łącznik|{{{4|-}}}}}} | nazwa szablonu = {{{nazwa szablonu|LinkŚródtytuł}}} | klasa = {{#if:{{#invoke:StronicowyParser|formatowanie}}|fonty_rodzina_sans fonty_linknagłówek}} | styl = {{Jeśli niepuste|{{{czcionka|}}}|przed lewy=font:|po lewy=;}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozmiar czcionki|}}}|przed lewy=font-size:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wysokość linii czcionki|}}}|przed lewy=line-height:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rodzina czcionki|}}}|przed lewy=font-family:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wariant czcionki|}}}|przed lewy=font-variant:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozciągnięcie czcionki|}}}|przed lewy=font-stretch:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{waga czcionki|}}}|przed lewy=font-weight:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{styl czcionki|}}}|przed lewy=font-style:|po lewy=;}}}} | bez automatu = {{{bez automatu|}}} }}<!-- -->{{#if:{{{bez kategorii stronicowych|}}}{{{bez automatu|}}}||{{#invoke:StronicowyParser|WstawKategorie|{{{uchwyt|{{{1|}}}}}}|{{{nazwa szablonu|LinkŚródtytuł}}}}}}}<!-- -->{{#if:{{{bez dodatkowych sprawdzeń|}}}||<!-- -->{{#invoke:Sprawdź|Parametry | =problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s %s do sprawdzenia{{))}} | 1 = txt!;uchwyt | uchwyt = txt!;1 | 2 = ;nazwa artykułu | nazwa artykułu = ;2 | 3 = ;nazwa książki | nazwa książki = ;3 | czcionka = | rozmiar czcionki = | wysokość linii czcionki = | rodzina czcionki = | wariant czcionki = | rozciągnięcie czcionki = | waga czcionki = | styl czcionki = | bez automatu = | bez kategorii stronicowych = }}}}</includeonly><noinclude>{{Dokumentacja|zawartość=To jest szablon pomocniczy szablonów:{{s|LinkŚródtytuł}} i {{s|LinkŚródtytułTutaj}}.}}{{Kategoria|Szablony - silniki}}</noinclude> jka4g0zvblrl99ypsdyfonw9dvso3za 552791 552788 2026-08-22T05:58:23Z Persino 2851 552791 wikitext text/x-wiki <includeonly>{{#ifeq:{{#invoke:StronicowyParser|formatowanie}}|tak|<templatestyles src="Szablon:StronaStart/styles.css" />}}{{#invoke:StronicowyParser|NumerŚródtytułu | {{#ifeq:{{{nazwa książki|{{{3|}}}}}}|{{{nazwa książki|{{{3}}}}}}|nazwa książki|void1}} = {{{nazwa książki|{{{3|}}}}}} | {{#ifeq:{{{nazwa artykułu|{{{2|}}}}}}|{{{nazwa artykułu|{{{2}}}}}}|nazwa artykułu|void2}} = {{{nazwa artykułu|{{{2|}}}}}} | uchwyt = {{{uchwyt|{{{1|}}}}}} | przyrostek = Tyt:&nbsp; | skrót = {{{skrót|}}} | łącznik = {{{łącznik|{{{4|-}}}}}} | nazwa szablonu = {{{nazwa szablonu|LinkŚródtytuł}}} | klasa = {{#if:{{#invoke:StronicowyParser|formatowanie}}|fonty_rodzina_sans fonty_linknagłówek}} | styl = {{Jeśli niepuste|{{{czcionka|}}}|przed lewy=font:|po lewy=;}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozmiar czcionki|}}}|przed lewy=font-size:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wysokość linii czcionki|}}}|przed lewy=line-height:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rodzina czcionki|}}}|przed lewy=font-family:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{wariant czcionki|}}}|przed lewy=font-variant:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{rozciągnięcie czcionki|}}}|przed lewy=font-stretch:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{waga czcionki|}}}|przed lewy=font-weight:|po lewy=;}}}}{{#if:{{{czcionka|}}}||{{Jeśli niepuste|{{{styl czcionki|}}}|przed lewy=font-style:|po lewy=;}}}} | bez automatu = {{{bez automatu|}}} }}<!-- -->{{#if:{{{bez kategorii stronicowych|}}}{{{bez automatu|}}}||{{#invoke:StronicowyParser|WstawKategorie|{{{uchwyt|{{{1|}}}}}}|{{{nazwa szablonu|LinkŚródtytuł}}}}}}}<!-- -->{{#if:{{{bez dodatkowych sprawdzeń|}}}||<!-- -->{{#invoke:Sprawdź|Parametry | =problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s %s do sprawdzenia{{))}} | 1 = txt!;uchwyt | uchwyt = txt!;1 | 2 = ;nazwa artykułu | nazwa artykułu = ;2 | 3 = ;nazwa książki | nazwa książki = ;3 | czcionka = | rozmiar czcionki = | wysokość linii czcionki = | rodzina czcionki = | wariant czcionki = | rozciągnięcie czcionki = | waga czcionki = | styl czcionki = | bez automatu = | bez kategorii stronicowych = }}}}</includeonly><noinclude>{{Dokumentacja|zawartość=To jest szablon pomocniczy szablonów:{{s|LinkŚródtytuł}} i {{s|LinkŚródtytułTutaj}}.}}{{Kategoria|Szablony - silniki}}</noinclude> 36l0vuvv635vkctormwe7tcg85r9voz Śpiewnik/Gaudeamus igitur/Tekst 0 57513 552756 538859 2026-08-21T19:27:06Z Ashaio 4702 dodatkowa wersja tekstu 552756 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaTekst}} == Tekst łaciński == '''Autor:''' nieznany (XIII-XIV wiek?)<br> {{Kolumny|3| <poem> 1. Gaudeamus igitur, Juvenes dum sumus. (2x) Post jucundam juventutem Post molestam senectutem nos habebit humus. (2x) 2. Ubi sunt, qui ante nos In mundo fuere? (2x) Vadite ad superos, Transite ad inferos, Ubi jam fuere. (2x) 3. Vita nostra brevis est, Brevi finietur. (2x) Venit mors velociter, Rapit nos atrociter, Nemini parcetur. (2x) 4. Vivat academia, Vivant professores, (2x) Vivat membrum quodlibet, Vivant membra quaelibet, Semper sint in flore. (2x) 5. Vivant omnes virgines, Faciles, formosae. (2x) Vivant et mulieres, Tenerae, amabiles, Bonae, laboriosae. (2x) 6. Pereat tristitia, Pereat osores, (2x) Pereat diabolus, Quivis antiburschius, Atque irrisores! (2x) </poem> }} '''Źródło:''' Stefan Surzyński, ''[https://polona.pl/item/echo-polskie-najwiekszy-zbior-piesni-polskich-obyczajowych-i-okolicznosciowych-z,MTEwNjExNzYy/28/#info:metadata Echo polskie : największy zbiór polskich pieśni obyczajowych i okolicznościowych (...) z melodyami]'', T. 2, Tarnów ok. 1912, s. 25–26. == Tekst polski == '''Autor:''' nieznany<br> {{Kolumny|2| <poem> 1. Weselmy się koledzy, dopókiśmy młodzi (bis) ::Młody wiek prędko upływa, ::Zanim starość uciążliwa ::::I tuż śmierć nadchodzi. (bis) 2. Gdzie są nasi przodkowie co światu grozili? (bis) ::Może się z tych odrodzą, ::Którzy od nich pochodzą, ::::Znowu będą żyli. (bis) 3. Niech nam długi wiek żyją kochani rodzice, (bis) ::Niechaj w cnocie lat dochodzą ::Te, które nam życie słodzą ::::Nadobne dziewice. (bis) 4. Wiwat Akademia i Profesorowie, (bis) ::Wiwat bracia każdy z nas, ::Niechaj żyje w późny czas, ::::Niech nam służy zdrowie. (bis) </poem> }} '''Źródło:''' Józef Chociszewski, ''[https://polona.pl/item-view/c8dab758-73bb-4df0-a7d4-27fff81d1baf?page=87 Bukiet pieśni światowych...]''. Poznań 1901, s. 169. == Wariant ze wstępem polskim (1912) == '''Autor:''' nieznany<br> {{Kolumny|2| <poem> 1. Gdy wieczorem marzę sam, Wówczas w wyobraźni Stają widma z młodych lat Szczęścia i przyjaźni. ::Gwar wesołych, młodych dusz ::W sercu mem się cieśni, ::Zda się, słyszę cudny głos ::Ulubionej pieśni: Gaudeamus igitur, Juvenes dum sumus, (Gaudeamus igitur, Juvenes dum sumus). ::Post jucundam juventutem, ::Post molestam senectutem ::Nos habebit humus, ::(Nos habebit humus)! 2. Dzielnie kroczy hoża młódź, Pełna ognia, siły, Iskry sypią im się z ócz, Ogniem płoną żyły; ::Kędy tylko zjawią się, ::Budzą wnet zachwyty, ::Każda z dziewcząt chętnie śle ::Tęsknych ócz błękity... Vivant omnes virgines, Faciles, formosae, (Vivant omnes virgines, Faciles, formosae), ::Vivant et mulieres, ::Tenerae, amabiles, ::Bonae, laboriosae, ::(Bonae, laboriosae)! </poem> }} '''Źródło:''' Stefan Surzyński, ''[https://polona.pl/item/echo-polskie-najwiekszy-zbior-piesni-polskich-obyczajowych-i-okolicznosciowych-z,MTEwNjExNzYy/28/#info:metadata Echo polskie : największy zbiór polskich pieśni obyczajowych i okolicznościowych (...) z melodyami]'', T. 2, Tarnów ok. 1912, s. 25–26. == Dłuższy wariant ze wstępem polskim (1915) == '''Autor:''' nieznany<br> {{Kolumny|2| <poem> 1. Gdy wieczorem marzę sam, To w mej wyobraźni Stają widma dawnych lat Szczęścia i przyjaźni. ::Gwar wesoły młodych dusz ::W głowie mej się cieśni, ::Zda się słyszę cichy dźwięk ::Ulubionej pieśni: Gaudeamus igitur, Juvenes dum sumus, (Gaudeamus igitur, Juvenes dum sumus). ::Post jucundam juventutem, ::Post molestam senectutem ::Nos habebit humus, ::(Nos habebit humus)! 2. Dziś gdy troski srebrzą włos, Los mnie gnie ku ziemi, W piersi wiecznie jęczy głos Skargami smutnemi... ::Lecz gdy wspomnień błyśnie rój, ::Dumnie wznoszę czoło ::I z fortuną w krwawy bój ::Idę znów wesoło: Vita nostra brevis est, Brevi finietur, (Vita nostra brevis est, Brevi finietur) ::Venit mors velociter, ::Rapit nos atrociter, ::Nemini parcetur ::(Nemini parcetur). 3. Ach, rozkosznych wspomnień tłum Błyska ponade mną, Niby gwiazdek złotych rój W noc zimową ciemną... ::Zda się, widzę miasta kształt; ::W pustej gdzieś ulicy ::Stoi stary znany gmach ::Mury mej wszechnicy: Vivat Academia, Vivant professores! (Vivat Academia, Vivant professores) ::Vivat membrum quodlibet, ::Vivat membra quaelibet, ::Semper sint in flore ::(Semper sint in flore!) 4. Dzielnie kroczy hoża młódź, Pełna życia, siły, Iskry świecą w oczach ich, Ogniem płoną żyły; ::Kędy tylko zjawią się, ::Budzą wnet zachwyty, ::Dziewcząt rój za nimi śle ::Tęsknych ócz błękity... Vivant omnes virgines, Graciles, formosae, (Vivant omnes virgines, Graciles, formosae), ::Vivant et mulieres, ::Tenerae, amabiles, ::Atque laboriosae, ::(Atque laboriosae)! 5. Złoty sen młodzieńczych lat Nie zagaśnie w duszy, Z nich najsłabszy wspomnień ślad Setki strun poruszy. ::Nie zmarnieje haseł moc, ::Co mą duszę wiodły ::I, jak ongi, krzyknę dziś ::Niech przepadnie podły... Pereat tristitia, Pereant dolores, (Pereant tristitia, Pereant dolores); ::Pereat et diabolus ::Quivis antiburschius, ::Atque irrisores ::(Atque irrisores)! </poem> }} '''Źródło:''' ''[https://polona.pl/item-view/d12aec89-79c0-41f0-8fab-ddc387b82458?page=61 Sto najpiękniejszych pieśni polskich patryotycznych, wojennych, żołnierskich, studenckich i ludowych zebranych ku uczczeniu 85-ej rocznicy Powstania Listopadowego]''. Lublin, 1915. S.&nbsp;56. == Wariant polityczny == ''z opisem „w więzieniu w roku 1826”''<br> '''Autor''' nieznany.<br> {{Kolumny|3| <poem> Weselmy się wraz koledzy, Dopókiśmy w kozie. Tu nam czas płynie bezpiecznie, A na świecie bojaźń wiecznie, ::Jak na złym przewozie. Niech żyją zdrajcy, moskale, I ich pan łaskawy; Pijmy zdrowie Konstantyna, Niech żyje carów rodzina, ::Niech używa sławy! Wiwat, kto po trupie idzie Na tron poprzednika; Wiwat, kto się wtenczas śmieje, Gdy cały naród łzy leje; ::Chwalmy szubiennika! Zapomnij, czem byłeś Lachu I dzisiaj zawołaj: Wiwat komu błyszczą skronie W krwawej Nerona koronie, ::Wiwat nasz Mikołaj! Nie szukaj narodzie cnoty, By zapobiec złemu; Moskal nie chce tej zarazy, Wiwat prześwietne ukazy, ::Wiwat ''byt' po siemu''! Nie szukaj w narodzie cnoty, Która wolność rodzi; Niech żyją acne sprawniki, Wiwat medale, krzyżyki, ::Wiwat każdy złodziej! Nie wspominaj dawnych mężów I ich sławne czyny; Wiwat Roth i Złotouchin, Wyrawkin, Puszkin i Sukin, ::Wiwat Moskwicyny! Za nic Niemcewicz, Karpiński, Feliński, Mickiewicz, Wiwat orzeł z dwoma łbami, Frak z żółtemi wyłogami, ::Wiwat Ipsolewicz! Wiwat, wiwat kuratory, Wraz z inspektorami, Wiwat sowy, nietoperze, Niech oświatę dyabeł bierze, ::Bodaj żyć z durniami. Nie potrzeba nam oświaty, Wyrzekł pan kurator; Niech ludzie w ciemności brodzą, Niech się durnie z durniów rodzą, ::Wiwat Imperator! Wiwat tajna policya Do śledzenia klubów! Wiwat Bajkow, Nowosielcow, I kochanka tych wisielców, ::Wiwat księżna Zubów! Niechaj głupcy czołem biją Przed Boga świątynią; Wiwat kto się z cnoty śmieje, Wiwant bachantki, złodzieje, ::Wiwat łotr ze świnią! Nie wspominaj trzeci maja, Nie wspominaj psie pole. Wiwat kto z życia wyzuty, Wiwat Kamczatka i knuty, ::Wiwat psy, sobole! Na sto katów wolne sejmy, Na sto katów posły, Kiep, co dawnej Polski płacze, Wiwat szpiedzy i brodacze, ::Urzędniki osły! Wiwat cesarz sprawiedliwy, Miła mu kostnica! Niech ćwiartują, nich wieszają Tych, co ojczyznę kochają, ::Wiwat szubienica! </poem> }} '''Źródło:''' {{Cytuj | autor= Franciszek Barański | tytuł= Jeszcze Polska nie zginęła : pieśni patryotyczne i narodowe. Część 1 i 2 | miejsce= Lwów | wydawca= nakładem Księgarni Polskiej B. Połonieckiego | data= ok. 1918 | url = https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 | s=80}} Pisownia częściowo uwspółcześniona. f00nd4ppqo7va8i4wot5ui0ihup28nt 552759 552756 2026-08-21T19:32:03Z Ashaio 4702 lit. 552759 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaTekst}} == Tekst łaciński == '''Autor:''' nieznany (XIII-XIV wiek?)<br> {{Kolumny|3| <poem> 1. Gaudeamus igitur, Juvenes dum sumus. (2x) Post jucundam juventutem Post molestam senectutem nos habebit humus. (2x) 2. Ubi sunt, qui ante nos In mundo fuere? (2x) Vadite ad superos, Transite ad inferos, Ubi jam fuere. (2x) 3. Vita nostra brevis est, Brevi finietur. (2x) Venit mors velociter, Rapit nos atrociter, Nemini parcetur. (2x) 4. Vivat academia, Vivant professores, (2x) Vivat membrum quodlibet, Vivant membra quaelibet, Semper sint in flore. (2x) 5. Vivant omnes virgines, Faciles, formosae. (2x) Vivant et mulieres, Tenerae, amabiles, Bonae, laboriosae. (2x) 6. Pereat tristitia, Pereat osores, (2x) Pereat diabolus, Quivis antiburschius, Atque irrisores! (2x) </poem> }} '''Źródło:''' Stefan Surzyński, ''[https://polona.pl/item/echo-polskie-najwiekszy-zbior-piesni-polskich-obyczajowych-i-okolicznosciowych-z,MTEwNjExNzYy/28/#info:metadata Echo polskie : największy zbiór polskich pieśni obyczajowych i okolicznościowych (...) z melodyami]'', T. 2, Tarnów ok. 1912, s. 25–26. == Tekst polski == '''Autor:''' nieznany<br> {{Kolumny|2| <poem> 1. Weselmy się koledzy, dopókiśmy młodzi (bis) ::Młody wiek prędko upływa, ::Zanim starość uciążliwa ::::I tuż śmierć nadchodzi. (bis) 2. Gdzie są nasi przodkowie co światu grozili? (bis) ::Może się z tych odrodzą, ::Którzy od nich pochodzą, ::::Znowu będą żyli. (bis) 3. Niech nam długi wiek żyją kochani rodzice, (bis) ::Niechaj w cnocie lat dochodzą ::Te, które nam życie słodzą ::::Nadobne dziewice. (bis) 4. Wiwat Akademia i Profesorowie, (bis) ::Wiwat bracia każdy z nas, ::Niechaj żyje w późny czas, ::::Niech nam służy zdrowie. (bis) </poem> }} '''Źródło:''' Józef Chociszewski, ''[https://polona.pl/item-view/c8dab758-73bb-4df0-a7d4-27fff81d1baf?page=87 Bukiet pieśni światowych...]''. Poznań 1901, s. 169. == Wariant ze wstępem polskim (1912) == '''Autor:''' nieznany<br> {{Kolumny|2| <poem> 1. Gdy wieczorem marzę sam, Wówczas w wyobraźni Stają widma z młodych lat Szczęścia i przyjaźni. ::Gwar wesołych, młodych dusz ::W sercu mem się cieśni, ::Zda się, słyszę cudny głos ::Ulubionej pieśni: Gaudeamus igitur, Juvenes dum sumus, (Gaudeamus igitur, Juvenes dum sumus). ::Post jucundam juventutem, ::Post molestam senectutem ::Nos habebit humus, ::(Nos habebit humus)! 2. Dzielnie kroczy hoża młódź, Pełna ognia, siły, Iskry sypią im się z ócz, Ogniem płoną żyły; ::Kędy tylko zjawią się, ::Budzą wnet zachwyty, ::Każda z dziewcząt chętnie śle ::Tęsknych ócz błękity... Vivant omnes virgines, Faciles, formosae, (Vivant omnes virgines, Faciles, formosae), ::Vivant et mulieres, ::Tenerae, amabiles, ::Bonae, laboriosae, ::(Bonae, laboriosae)! </poem> }} '''Źródło:''' Stefan Surzyński, ''[https://polona.pl/item/echo-polskie-najwiekszy-zbior-piesni-polskich-obyczajowych-i-okolicznosciowych-z,MTEwNjExNzYy/28/#info:metadata Echo polskie : największy zbiór polskich pieśni obyczajowych i okolicznościowych (...) z melodyami]'', T. 2, Tarnów ok. 1912, s. 25–26. == Dłuższy wariant ze wstępem polskim (1915) == '''Autor:''' nieznany<br> {{Kolumny|2| <poem> 1. Gdy wieczorem marzę sam, To w mej wyobraźni Stają widma dawnych lat Szczęścia i przyjaźni. ::Gwar wesoły młodych dusz ::W głowie mej się cieśni, ::Zda się słyszę cichy dźwięk ::Ulubionej pieśni: Gaudeamus igitur, Juvenes dum sumus, (Gaudeamus igitur, Juvenes dum sumus). ::Post jucundam juventutem, ::Post molestam senectutem ::Nos habebit humus, ::(Nos habebit humus)! 2. Dziś gdy troski srebrzą włos, Los mnie gnie ku ziemi, W piersi wiecznie jęczy głos Skargami smutnemi... ::Lecz gdy wspomnień błyśnie rój, ::Dumnie wznoszę czoło ::I z fortuną w krwawy bój ::Idę znów wesoło: Vita nostra brevis est, Brevi finietur, (Vita nostra brevis est, Brevi finietur) ::Venit mors velociter, ::Rapit nos atrociter, ::Nemini parcetur ::(Nemini parcetur). 3. Ach, rozkosznych wspomnień tłum Błyska ponade mną, Niby gwiazdek złotych rój W noc zimową ciemną... ::Zda się, widzę miasta kształt; ::W pustej gdzieś ulicy ::Stoi stary znany gmach ::Mury mej wszechnicy: Vivat Academia, Vivant professores! (Vivat Academia, Vivant professores) ::Vivat membrum quodlibet, ::Vivat membra quaelibet, ::Semper sint in flore ::(Semper sint in flore!) 4. Dzielnie kroczy hoża młódź, Pełna życia, siły, Iskry świecą w oczach ich, Ogniem płoną żyły; ::Kędy tylko zjawią się, ::Budzą wnet zachwyty, ::Dziewcząt rój za nimi śle ::Tęsknych ócz błękity... Vivant omnes virgines, Graciles, formosae, (Vivant omnes virgines, Graciles, formosae), ::Vivant et mulieres, ::Tenerae, amabiles, ::Atque laboriosae, ::(Atque laboriosae)! 5. Złoty sen młodzieńczych lat Nie zagaśnie w duszy, Z nich najsłabszy wspomnień ślad Setki strun poruszy. ::Nie zmarnieje haseł moc, ::Co mą duszę wiodły ::I, jak ongi, krzyknę dziś ::Niech przepadnie podły... Pereat tristitia, Pereant dolores, (Pereat tristitia, Pereant dolores); ::Pereat et diabolus ::Quivis antiburschius, ::Atque irrisores ::(Atque irrisores)! </poem> }} '''Źródło:''' ''[https://polona.pl/item-view/d12aec89-79c0-41f0-8fab-ddc387b82458?page=61 Sto najpiękniejszych pieśni polskich patryotycznych, wojennych, żołnierskich, studenckich i ludowych zebranych ku uczczeniu 85-ej rocznicy Powstania Listopadowego]''. Lublin, 1915. S.&nbsp;56. == Wariant polityczny == ''z opisem „w więzieniu w roku 1826”''<br> '''Autor''' nieznany.<br> {{Kolumny|3| <poem> Weselmy się wraz koledzy, Dopókiśmy w kozie. Tu nam czas płynie bezpiecznie, A na świecie bojaźń wiecznie, ::Jak na złym przewozie. Niech żyją zdrajcy, moskale, I ich pan łaskawy; Pijmy zdrowie Konstantyna, Niech żyje carów rodzina, ::Niech używa sławy! Wiwat, kto po trupie idzie Na tron poprzednika; Wiwat, kto się wtenczas śmieje, Gdy cały naród łzy leje; ::Chwalmy szubiennika! Zapomnij, czem byłeś Lachu I dzisiaj zawołaj: Wiwat komu błyszczą skronie W krwawej Nerona koronie, ::Wiwat nasz Mikołaj! Nie szukaj narodzie cnoty, By zapobiec złemu; Moskal nie chce tej zarazy, Wiwat prześwietne ukazy, ::Wiwat ''byt' po siemu''! Nie szukaj w narodzie cnoty, Która wolność rodzi; Niech żyją acne sprawniki, Wiwat medale, krzyżyki, ::Wiwat każdy złodziej! Nie wspominaj dawnych mężów I ich sławne czyny; Wiwat Roth i Złotouchin, Wyrawkin, Puszkin i Sukin, ::Wiwat Moskwicyny! Za nic Niemcewicz, Karpiński, Feliński, Mickiewicz, Wiwat orzeł z dwoma łbami, Frak z żółtemi wyłogami, ::Wiwat Ipsolewicz! Wiwat, wiwat kuratory, Wraz z inspektorami, Wiwat sowy, nietoperze, Niech oświatę dyabeł bierze, ::Bodaj żyć z durniami. Nie potrzeba nam oświaty, Wyrzekł pan kurator; Niech ludzie w ciemności brodzą, Niech się durnie z durniów rodzą, ::Wiwat Imperator! Wiwat tajna policya Do śledzenia klubów! Wiwat Bajkow, Nowosielcow, I kochanka tych wisielców, ::Wiwat księżna Zubów! Niechaj głupcy czołem biją Przed Boga świątynią; Wiwat kto się z cnoty śmieje, Wiwant bachantki, złodzieje, ::Wiwat łotr ze świnią! Nie wspominaj trzeci maja, Nie wspominaj psie pole. Wiwat kto z życia wyzuty, Wiwat Kamczatka i knuty, ::Wiwat psy, sobole! Na sto katów wolne sejmy, Na sto katów posły, Kiep, co dawnej Polski płacze, Wiwat szpiedzy i brodacze, ::Urzędniki osły! Wiwat cesarz sprawiedliwy, Miła mu kostnica! Niech ćwiartują, nich wieszają Tych, co ojczyznę kochają, ::Wiwat szubienica! </poem> }} '''Źródło:''' {{Cytuj | autor= Franciszek Barański | tytuł= Jeszcze Polska nie zginęła : pieśni patryotyczne i narodowe. Część 1 i 2 | miejsce= Lwów | wydawca= nakładem Księgarni Polskiej B. Połonieckiego | data= ok. 1918 | url = https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 | s=80}} Pisownia częściowo uwspółcześniona. a71jvaftbm0ptwjbszvoeew3wrtorck Moduł:StronicowyParser/NumerObiektu 828 59499 552782 548079 2026-08-22T04:56:33Z Persino 2851 552782 Scribunto text/plain local p={}; function p.NumerObiektu(frame, nazwa_obiektu) local pf=frame:getParent(); local parametry_modul=require("Module:Parametry"); local uchwyt_obiektu=frame.args["uchwyt"]; local bez_automatu=parametry_modul.CzyTak(frame.args["bez automatu"]); local html_modul=require("Module:Html"); uchwyt_obiektu=uchwyt_obiektu and html_modul.DecodeHtml(uchwyt_obiektu,true) or nil; local nazwa_strony; local html_modul=require("Module:Html"); local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local techniczne_modul=require("Module:Techniczne"); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu; nazwa_artykulu=frame.args["nazwa artykułu"]; nazwa_ksiazki=frame.args["nazwa książki"]; local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych; local czy_table_tablica_transportu=parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki); local czy_aktualna_strona=nil; local nazwa_przestrzeni_nazw=pf.args["nazwa przestrzeni nazw"]; local nazwa_jednostki=pf.args["nazwa jednostki"]; if((nazwa_przestrzeni_nazw) or (nazwa_jednostki))then if(((not nazwa_artykulu)and(not nazwa_ksiazki)) or((nazwa_artykulu)and(not nazwa_ksiazki)))then if(nazwa_przestrzeni_nazw)then nazwa_przestrzeni_nazw=html_modul.DecodeHtml(nazwa_przestrzeni_nazw,true); end; if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local ksiazkowe_modul=require("Module:Książkowe"); local tabela_nazw_poczatkowe={}; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_poczatkowe); local nazwa_jednostki=nazwa_jednostki or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_poczatkowe); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={};local tabela_nazw_aktualna={}; strona=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); local aktualna_strona=ksiazkowe_modul["PełnaNazwaArtykułu"](nil,tabela_nazw_aktualna); if(strona~=aktualna_strona)then nazwa_artykulu=nazwa_artykulu or nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki_aktualna=ksiazkowe_modul["PełnaNazwaKsiążki"](nil,tabela_nazw_aktualna); local nazwa_ksiazki_strony=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(nazwa_ksiazki_aktualna~=nazwa_ksiazki_strony)then nazwa_ksiazki=nazwa_ksiazki or nazwa_ksiazki_strony; end; end; end; end; if((not nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=1; nazwa_strony=""; elseif((nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=2; nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; end; end; else local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu); nazwa_ksiazki=html_modul.DecodeHtml(nazwa_ksiazki,true); nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_ksiazki,[2]=nazwa_modulu,}; local ksiazkawe_modul=require("Module:Książkowe"); local tabela_nazw={}; nazwa_ksiazki=ksiazkawe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); if((nazwa_artykulu)and(nazwa_artykulu~=""))then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; else nazwa_artykulu=""; end; nazwa_strony=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; nazwa_strony=strona; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; else czy_aktualna_strona=2; nazwa_strony=strona; end; end; end; local link = function(adres_linku,przedrostek,skrot,lacznik,nazwa_linku,klasa,styl,link_wikidane,nazwy_woluminowe_stron) local czy_klasa=parametry_modul.CzyTak(klasa); local czy_styl=parametry_modul.CzyTak(styl); local spanramka_dziecko=mw.html.create('span'); if(czy_klasa)then spanramka_dziecko:attr("class",klasa);end; if(czy_styl)then spanramka_dziecko:attr('style',styl);end; local czy_skrot=parametry_modul.CzyTak(skrot); nazwa_linku=przedrostek..(czy_skrot and (skrot..lacznik) or "")..nazwa_linku; spanramka_dziecko:wikitext(nazwa_linku); local kod_html=tostring(spanramka_dziecko:allDone()); ---- local spanramka=mw.html.create('span'); if((link_wikidane)and(link_wikidane[1]))then spanramka:addClass("link"); spanramka:addClass(link_wikidane[1]); end; ---- local linki_modul=require("Module:Linki"); linki_modul.LinkOgromne(spanramka,nazwa_linku); ---- local link="[["..adres_linku.."|"..kod_html.."]]"; spanramka:wikitext(link); local kod_html=spanramka:allDone(); return tostring(kod_html); end; local wzor = function(uchwyt,numeracja,styl_main,styl_odstepu,pole_odstepu,styl_wzoru,klasa_wzoru,wzor,opis,opis2,klasa_opisu,styl_opisu,styl_opisu_2,wzor_opisu,wzor_opisu_2,styl_alternatywy_opisu,styl_alternatywy_opisu_2,pozycja_numeracji,klasa_numeracji,styl_numeracji,bez_automatu) local divramka=mw.html.create('div'); local parametry_modul=require("Module:Parametry"); local czy_pozycja_numeracji_prawa=parametry_modul.CzyTak(pozycja_numeracji); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',"wzór_"..html_modul.EncodeId(uchwyt,true)); else if(numeracja)then divramka:attr('id',"wzór_"..numeracja); else divramka:attr('id',"niedopasowany-wzór_"..html_modul.EncodeId(uchwyt,true)); end; end; end; if(parametry_modul.CzyTak(styl_main))then divramka:attr('style',styl_main); end; local uchwyt_fun=function() if(parametry_modul.CzyTak(uchwyt))then local divuchwytramka=mw.html.create('div'); divuchwytramka:attr('class',klasa_numeracji); divuchwytramka:attr('style',styl_numeracji); if(parametry_modul.CzyTak(bez_automatu))then divuchwytramka:wikitext('(',uchwyt..")"); else if(numeracja)then divuchwytramka:wikitext('('..numeracja..")"); else divuchwytramka:wikitext("(Niedopasowany uchwyt: "..uchwyt..")"); end; end; divramka:node(divuchwytramka); end; end; local pole_odstepu_fun=function() divramka:addClass("wzory"); local divramka2=mw.html.create('div'); divramka2:attr('style',styl_odstepu); divramka2:wikitext(pole_odstepu); divramka:node(divramka2); end; local opis_fun=function(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu) if(parametry_modul.CzyTak(opis))then local divramka5=mw.html.create('div') divramka5:attr('class',klasa_opisu) divramka5:attr('style',styl_opisu) divramka5:wikitext(wzor_opisu) divramka:node(divramka5) else local divramka5=mw.html.create('div'); divramka5:attr('style',styl_alternatywy_opisu); divramka:node(divramka5) end; end; if(not czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; opis_fun(opis2,styl_opisu_2,wzor_opisu_2,styl_alternatywy_opisu_2); local divramka4=mw.html.create('div'); divramka4:attr('class',klasa_wzoru); divramka4:attr('style',styl_wzoru); divramka4:wikitext(wzor); divramka:node(divramka4); opis_fun(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu); if(czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; return tostring(divramka:allDone()); end; local rysunek=function(uchwyt,numeracja,opis, rysunek, pozycja,rozmiar,klasa,styl,bez_automatu) local czy_uchwyt=parametry_modul.CzyTak(uchwyt); local id; if(czy_uchwyt)then if(numeracja)then if(parametry_modul.CzyTak(bez_automatu))then id="rysunek_"..html_modul.EncodeId(uchwyt,true); else id="rysunek_"..numeracja; end; else id="niedopasowany-rysunek_"..html_modul.EncodeHtml(uchwyt,true); end; end; local czy_opis=parametry_modul.CzyTak(opis); local plik_modul=require("Module:Plik"); local wywolanie_rysunku=plik_modul.Plik{ plik=((rysunek)and rysunek or "Przykładowy rysunek.svg"), id=id, styl=styl, klasa=klasa, ramka="mały", pozycja=pozycja or "prawo", rozmiar=(rozmiar or "200px"), opis=((czy_uchwyt or czy_opis)and (((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or ""), }; --local wywolanie_rysunku="[[File:"..((rysunek)and rysunek or "Przykładowy rysunek.svg").."|thumb|"..(pozycja or "right").."|"..(rozmiar or "200px")..((czy_uchwyt or czy_opis)and ("|"..((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or "").."]]"; return tostring(wywolanie_rysunku); end; local wypowiedzenie = function(uchwyt,przedrostek,numeracja,klasa,styl,przedrostek2,rodzaj,kogo,czego,jakie,styl_naglowka,styl_tekstu,tekst,bez_automatu) local divramka=mw.html.create('div'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',przedrostek.."_"..html_modul.EncodeId(uchwyt,true)); else divramka:attr('id',((not numeracja)and "niedopasowany-" or "")..przedrostek.."_"..(numeracja or html_modul.EncodeId(uchwyt,true))); end; end; divramka:attr('class',klasa); divramka:attr('style',styl); local wikitext=""; if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then wikitext="("..przedrostek2.." "..uchwyt..")"; else if(numeracja)then wikitext="("..przedrostek2.." "..numeracja..")"; else wikitext="("..przedrostek2.." Niedopawany uchwyt: "..uchwyt..")"; end; end; end; if(parametry_modul.CzyTak(styl_naglowka))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_naglowka); spanramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); divramka:node(spanramka); else divramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); end; divramka:wikitext('<BR>'); if(parametry_modul.CzyTak(styl_tekstu))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_tekstu); spanramka:wikitext(tekst); divramka:node(spanramka); else divramka:wikitext(tekst); end; return tostring(divramka:allDone()); end; local punkty = function(uchwyt,numeracja,przedrostek_id,klasa,styl,prefiks,bez_automatu) local spanramka=mw.html.create('sup'); spanramka:attr('style',klasa); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then spanramka:attr('id',przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); else if(parametry_modul.CzyTak(numeracja))then spanramka:attr('id',przedrostek_id.."_"..numeracja); else spanramka:attr('id',"niedopasowany-"..przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); end; end; end; spanramka:attr('style',styl); local smallramka=mw.html.create('small'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then smallramka:wikitext('['..prefiks..": "..uchwyt..']'); else if(parametry_modul.CzyTak(numeracja))then smallramka:wikitext('['..prefiks..": "..numeracja..']'); else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: "..uchwyt..']'); end; end; else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: brak uchwytu]"); end; spanramka:node(smallramka); return tostring(spanramka:allDone()); end; local nazwa_strony_fun=function(nazwa_strony) if((nazwa_strony)and(nazwa_strony==""))then return "";end; if(czy_aktualna_strona)then if(czy_aktualna_strona==1)then return ""; elseif(czy_aktualna_strona==2)then if(tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return "";end; end; else if((tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and (tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return ""; end; end; return html_modul.EncodeId(nazwa_strony); end; local function BladTablicyTransportu(czy_table_tablica_transportu) if(not czy_table_tablica_transportu)then local blad_modul=require("Module:Błąd"); return blad_modul.error{tekst="Błąd stronicowego parsera: '''Moduł:StronicowyParser'''. Tablica silnika transportu lub jego składowe przyjmują wartość nietabelkową.",tag="strong",}; end; return ""; end; local function BezNumeracjiZUchwytami() if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(uchwyt_obiektu)then local uchwyt_obiektu=html_modul.EncodeId(uchwyt_obiektu,true); return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["skrót"],frame.args["łącznik"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"])..")"; else local uchwyt_obiektu=parametry_modul.CzyTak(uchwyt_obiektu) and html_modul.EncodeId(uchwyt_obiektu,true) or nil; return "("..link(nazwa_strony.."#"..frame.args["id"].."_".."Nieznany uchwyt",frame.args["przedrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..(uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"])..")"; end; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,uchwyt_obiektu,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,uchwyt_obiektu,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,uchwyt_obiektu,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return uchwyt_obiektu; end; else return uchwyt_obiektu; end; end; if((not czy_table_tablica_transportu)or(parametry_modul.CzyTak(frame.args["bez automatu"])))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(czy_table_tablica_transportu); end; local link_wikidane;local nazwy_woluminowe_stron; local tabela_listy_uchwytow_i_numeracji_na_stronie; if(czy_aktualna_strona==nil)then local dane_analizy_artykulu=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(dane_analizy_artykulu)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni=dane_analizy_artykulu[nazwa_przestrzeni]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; nazwy_woluminowe_stron=tabela_listy_analizy_na_stronie.nazwy_woluminowe_stron; end; end; end; end; end; end; elseif(czy_aktualna_strona==1)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu; link_wikidane=tabela_listy_danych_analizy_ksiazki.link_wikidane; nazwy_woluminowe_stron=tabela_listy_danych_analizy_ksiazki.nazwy_woluminowe_stron; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_na_stronie))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; elseif(czy_aktualna_strona==2)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; nazwy_woluminowe_stron=tabela_listy_analizy_na_stronie.nazwy_woluminowe_stron; end; end; end; end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); if(tabela_listy_uchwytow_i_numeracji_na_stronie)then local spis_uchwytow=tabela_listy_uchwytow_i_numeracji_na_stronie[nazwa_obiektu]; local uchwyty_bez_numeracji=spis_uchwytow.uchwyty_bez_numeracji; spis_uchwytow=uchwyty_bez_numeracji or spis_uchwytow; if(spis_uchwytow)then if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then local UchwytObiektu=function(uchwyt_obiektu) if(uchwyty_bez_numeracji)then return uchwyt_obiektu[1]; end; return uchwyt_obiektu; end; for _, dany_artykul in ipairs(spis_uchwytow)do if(UchwytObiektu(dany_artykul[1])==uchwyt_obiektu)then if(not uchwyty_bez_numeracji)then if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(not dany_artykul[2])then return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; end; return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..dany_artykul[2],frame.args["przedrostek"],frame.args["skrót"],frame.args["łącznik"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,dany_artykul[2],frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,dany_artykul[2],frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,dany_artykul[2],frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="tekst")then local tekst=dany_artykul[2]; if(tekst)then local tekst=pf:preprocess(tekst); return tekst; end; return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else if(dany_artykul[2])then local tytul_szablonu=frame.args["nazwa szablonu"] or szablonowe_modul.NazwaSzablonu(frame:getParent():getTitle()); local tab_naglowek=stronicowyparser_obiekty_modul.linki_szablony_wprowadzenia_tekstu[nazwa_obiektu]; local adres=dany_artykul[2][2]; local czy_w_tym_szablony=mw.ustring.match(adres,"{{[^{}]+}}"); if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); adres=specjalne_modul["PrzetwórzNagłówek"](adres,true); end; local adres=dany_artykul[2][1].."#"..adres; if(tytul_szablonu==tab_naglowek[1])then local naglowek=dany_artykul[2][3]; if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false); end; return link(adres,nil,nil,nil,naglowek,frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron); elseif(tytul_szablonu==tab_naglowek[2])then return link(adres,nil,nil,nil,"tutaj",frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron); end; end; end; end; end; end; end; end; if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..html_modul.EncodeId(uchwyt_obiektu,true),frame.args["przedrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,nil,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,nil,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],nil,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,nil,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; end; return p; j1b5dzhz7mql4a8zkh5qhbzqo0o2b7y 552783 552782 2026-08-22T05:11:17Z Persino 2851 552783 Scribunto text/plain local p={}; function p.NumerObiektu(frame, nazwa_obiektu) local pf=frame:getParent(); local parametry_modul=require("Module:Parametry"); local uchwyt_obiektu=frame.args["uchwyt"]; local bez_automatu=parametry_modul.CzyTak(frame.args["bez automatu"]); local html_modul=require("Module:Html"); uchwyt_obiektu=uchwyt_obiektu and html_modul.DecodeHtml(uchwyt_obiektu,true) or nil; local nazwa_strony; local html_modul=require("Module:Html"); local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local techniczne_modul=require("Module:Techniczne"); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu; nazwa_artykulu=frame.args["nazwa artykułu"]; nazwa_ksiazki=frame.args["nazwa książki"]; local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych; local czy_table_tablica_transportu=parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki); local czy_aktualna_strona=nil; local nazwa_przestrzeni_nazw=pf.args["nazwa przestrzeni nazw"]; local nazwa_jednostki=pf.args["nazwa jednostki"]; if((nazwa_przestrzeni_nazw) or (nazwa_jednostki))then if(((not nazwa_artykulu)and(not nazwa_ksiazki)) or((nazwa_artykulu)and(not nazwa_ksiazki)))then if(nazwa_przestrzeni_nazw)then nazwa_przestrzeni_nazw=html_modul.DecodeHtml(nazwa_przestrzeni_nazw,true); end; if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local ksiazkowe_modul=require("Module:Książkowe"); local tabela_nazw_poczatkowe={}; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_poczatkowe); local nazwa_jednostki=nazwa_jednostki or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_poczatkowe); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={};local tabela_nazw_aktualna={}; strona=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); local aktualna_strona=ksiazkowe_modul["PełnaNazwaArtykułu"](nil,tabela_nazw_aktualna); if(strona~=aktualna_strona)then nazwa_artykulu=nazwa_artykulu or nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki_aktualna=ksiazkowe_modul["PełnaNazwaKsiążki"](nil,tabela_nazw_aktualna); local nazwa_ksiazki_strony=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(nazwa_ksiazki_aktualna~=nazwa_ksiazki_strony)then nazwa_ksiazki=nazwa_ksiazki or nazwa_ksiazki_strony; end; end; end; end; if((not nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=1; nazwa_strony=""; elseif((nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=2; nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; end; end; else local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu); nazwa_ksiazki=html_modul.DecodeHtml(nazwa_ksiazki,true); nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_ksiazki,[2]=nazwa_modulu,}; local ksiazkawe_modul=require("Module:Książkowe"); local tabela_nazw={}; nazwa_ksiazki=ksiazkawe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); if((nazwa_artykulu)and(nazwa_artykulu~=""))then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; else nazwa_artykulu=""; end; nazwa_strony=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; nazwa_strony=strona; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; else czy_aktualna_strona=2; nazwa_strony=strona; end; end; end; local link = function(adres_linku,przedrostek,skrot,lacznik,nazwa_linku,klasa,styl,link_wikidane,nazwy_woluminowe_stron) local czy_klasa=parametry_modul.CzyTak(klasa); local czy_styl=parametry_modul.CzyTak(styl); local spanramka_dziecko=mw.html.create('span'); if(czy_klasa)then spanramka_dziecko:attr("class",klasa);end; if(czy_styl)then spanramka_dziecko:attr('style',styl);end; local czy_skrot=parametry_modul.CzyTak(skrot); nazwa_linku=(przedrostek or "") ..(czy_skrot and (skrot..lacznik) or ((skrot and lacznik) and (function() if(nazwy_woluminowe_stron)then local podstrona=nazwy_woluminowe_stron[1]; local pozawoluminowe_strony=nazwy_woluminowe_stron[2]; local czy_artykul_korzystany=nazwy_woluminowe_stron[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return podstrona..lacznik; end; end; end; return ""; end)() or "") )..nazwa_linku; spanramka_dziecko:wikitext(nazwa_linku); local kod_html=tostring(spanramka_dziecko:allDone()); ---- local spanramka=mw.html.create('span'); if((link_wikidane)and(link_wikidane[1]))then spanramka:addClass("link"); spanramka:addClass(link_wikidane[1]); end; ---- local linki_modul=require("Module:Linki"); linki_modul.LinkOgromne(spanramka,nazwa_linku); ---- local link="[["..adres_linku.."|"..kod_html.."]]"; spanramka:wikitext(link); local kod_html=spanramka:allDone(); return tostring(kod_html); end; local wzor = function(uchwyt,numeracja,styl_main,styl_odstepu,pole_odstepu,styl_wzoru,klasa_wzoru,wzor,opis,opis2,klasa_opisu,styl_opisu,styl_opisu_2,wzor_opisu,wzor_opisu_2,styl_alternatywy_opisu,styl_alternatywy_opisu_2,pozycja_numeracji,klasa_numeracji,styl_numeracji,bez_automatu) local divramka=mw.html.create('div'); local parametry_modul=require("Module:Parametry"); local czy_pozycja_numeracji_prawa=parametry_modul.CzyTak(pozycja_numeracji); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',"wzór_"..html_modul.EncodeId(uchwyt,true)); else if(numeracja)then divramka:attr('id',"wzór_"..numeracja); else divramka:attr('id',"niedopasowany-wzór_"..html_modul.EncodeId(uchwyt,true)); end; end; end; if(parametry_modul.CzyTak(styl_main))then divramka:attr('style',styl_main); end; local uchwyt_fun=function() if(parametry_modul.CzyTak(uchwyt))then local divuchwytramka=mw.html.create('div'); divuchwytramka:attr('class',klasa_numeracji); divuchwytramka:attr('style',styl_numeracji); if(parametry_modul.CzyTak(bez_automatu))then divuchwytramka:wikitext('(',uchwyt..")"); else if(numeracja)then divuchwytramka:wikitext('('..numeracja..")"); else divuchwytramka:wikitext("(Niedopasowany uchwyt: "..uchwyt..")"); end; end; divramka:node(divuchwytramka); end; end; local pole_odstepu_fun=function() divramka:addClass("wzory"); local divramka2=mw.html.create('div'); divramka2:attr('style',styl_odstepu); divramka2:wikitext(pole_odstepu); divramka:node(divramka2); end; local opis_fun=function(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu) if(parametry_modul.CzyTak(opis))then local divramka5=mw.html.create('div') divramka5:attr('class',klasa_opisu) divramka5:attr('style',styl_opisu) divramka5:wikitext(wzor_opisu) divramka:node(divramka5) else local divramka5=mw.html.create('div'); divramka5:attr('style',styl_alternatywy_opisu); divramka:node(divramka5) end; end; if(not czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; opis_fun(opis2,styl_opisu_2,wzor_opisu_2,styl_alternatywy_opisu_2); local divramka4=mw.html.create('div'); divramka4:attr('class',klasa_wzoru); divramka4:attr('style',styl_wzoru); divramka4:wikitext(wzor); divramka:node(divramka4); opis_fun(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu); if(czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; return tostring(divramka:allDone()); end; local rysunek=function(uchwyt,numeracja,opis, rysunek, pozycja,rozmiar,klasa,styl,bez_automatu) local czy_uchwyt=parametry_modul.CzyTak(uchwyt); local id; if(czy_uchwyt)then if(numeracja)then if(parametry_modul.CzyTak(bez_automatu))then id="rysunek_"..html_modul.EncodeId(uchwyt,true); else id="rysunek_"..numeracja; end; else id="niedopasowany-rysunek_"..html_modul.EncodeHtml(uchwyt,true); end; end; local czy_opis=parametry_modul.CzyTak(opis); local plik_modul=require("Module:Plik"); local wywolanie_rysunku=plik_modul.Plik{ plik=((rysunek)and rysunek or "Przykładowy rysunek.svg"), id=id, styl=styl, klasa=klasa, ramka="mały", pozycja=pozycja or "prawo", rozmiar=(rozmiar or "200px"), opis=((czy_uchwyt or czy_opis)and (((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or ""), }; --local wywolanie_rysunku="[[File:"..((rysunek)and rysunek or "Przykładowy rysunek.svg").."|thumb|"..(pozycja or "right").."|"..(rozmiar or "200px")..((czy_uchwyt or czy_opis)and ("|"..((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or "").."]]"; return tostring(wywolanie_rysunku); end; local wypowiedzenie = function(uchwyt,przedrostek,numeracja,klasa,styl,przedrostek2,rodzaj,kogo,czego,jakie,styl_naglowka,styl_tekstu,tekst,bez_automatu) local divramka=mw.html.create('div'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',przedrostek.."_"..html_modul.EncodeId(uchwyt,true)); else divramka:attr('id',((not numeracja)and "niedopasowany-" or "")..przedrostek.."_"..(numeracja or html_modul.EncodeId(uchwyt,true))); end; end; divramka:attr('class',klasa); divramka:attr('style',styl); local wikitext=""; if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then wikitext="("..przedrostek2.." "..uchwyt..")"; else if(numeracja)then wikitext="("..przedrostek2.." "..numeracja..")"; else wikitext="("..przedrostek2.." Niedopawany uchwyt: "..uchwyt..")"; end; end; end; if(parametry_modul.CzyTak(styl_naglowka))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_naglowka); spanramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); divramka:node(spanramka); else divramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); end; divramka:wikitext('<BR>'); if(parametry_modul.CzyTak(styl_tekstu))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_tekstu); spanramka:wikitext(tekst); divramka:node(spanramka); else divramka:wikitext(tekst); end; return tostring(divramka:allDone()); end; local punkty = function(uchwyt,numeracja,przedrostek_id,klasa,styl,prefiks,bez_automatu) local spanramka=mw.html.create('sup'); spanramka:attr('style',klasa); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then spanramka:attr('id',przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); else if(parametry_modul.CzyTak(numeracja))then spanramka:attr('id',przedrostek_id.."_"..numeracja); else spanramka:attr('id',"niedopasowany-"..przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); end; end; end; spanramka:attr('style',styl); local smallramka=mw.html.create('small'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then smallramka:wikitext('['..prefiks..": "..uchwyt..']'); else if(parametry_modul.CzyTak(numeracja))then smallramka:wikitext('['..prefiks..": "..numeracja..']'); else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: "..uchwyt..']'); end; end; else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: brak uchwytu]"); end; spanramka:node(smallramka); return tostring(spanramka:allDone()); end; local nazwa_strony_fun=function(nazwa_strony) if((nazwa_strony)and(nazwa_strony==""))then return "";end; if(czy_aktualna_strona)then if(czy_aktualna_strona==1)then return ""; elseif(czy_aktualna_strona==2)then if(tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return "";end; end; else if((tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and (tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return ""; end; end; return html_modul.EncodeId(nazwa_strony); end; local function BladTablicyTransportu(czy_table_tablica_transportu) if(not czy_table_tablica_transportu)then local blad_modul=require("Module:Błąd"); return blad_modul.error{tekst="Błąd stronicowego parsera: '''Moduł:StronicowyParser'''. Tablica silnika transportu lub jego składowe przyjmują wartość nietabelkową.",tag="strong",}; end; return ""; end; local function BezNumeracjiZUchwytami() if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(uchwyt_obiektu)then local uchwyt_obiektu=html_modul.EncodeId(uchwyt_obiektu,true); return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["skrót"],frame.args["łącznik"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"])..")"; else local uchwyt_obiektu=parametry_modul.CzyTak(uchwyt_obiektu) and html_modul.EncodeId(uchwyt_obiektu,true) or nil; return "("..link(nazwa_strony.."#"..frame.args["id"].."_".."Nieznany uchwyt",frame.args["przedrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..(uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"])..")"; end; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,uchwyt_obiektu,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,uchwyt_obiektu,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,uchwyt_obiektu,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return uchwyt_obiektu; end; else return uchwyt_obiektu; end; end; if((not czy_table_tablica_transportu)or(parametry_modul.CzyTak(frame.args["bez automatu"])))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(czy_table_tablica_transportu); end; local link_wikidane;local nazwy_woluminowe_stron; local tabela_listy_uchwytow_i_numeracji_na_stronie; if(czy_aktualna_strona==nil)then local dane_analizy_artykulu=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(dane_analizy_artykulu)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni=dane_analizy_artykulu[nazwa_przestrzeni]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; nazwy_woluminowe_stron=tabela_listy_analizy_na_stronie.nazwy_woluminowe_stron; end; end; end; end; end; end; elseif(czy_aktualna_strona==1)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu; link_wikidane=tabela_listy_danych_analizy_ksiazki.link_wikidane; nazwy_woluminowe_stron=tabela_listy_danych_analizy_ksiazki.nazwy_woluminowe_stron; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_na_stronie))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; elseif(czy_aktualna_strona==2)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; nazwy_woluminowe_stron=tabela_listy_analizy_na_stronie.nazwy_woluminowe_stron; end; end; end; end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); if(tabela_listy_uchwytow_i_numeracji_na_stronie)then local spis_uchwytow=tabela_listy_uchwytow_i_numeracji_na_stronie[nazwa_obiektu]; local uchwyty_bez_numeracji=spis_uchwytow.uchwyty_bez_numeracji; spis_uchwytow=uchwyty_bez_numeracji or spis_uchwytow; if(spis_uchwytow)then if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then local UchwytObiektu=function(uchwyt_obiektu) if(uchwyty_bez_numeracji)then return uchwyt_obiektu[1]; end; return uchwyt_obiektu; end; for _, dany_artykul in ipairs(spis_uchwytow)do if(UchwytObiektu(dany_artykul[1])==uchwyt_obiektu)then if(not uchwyty_bez_numeracji)then if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(not dany_artykul[2])then return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; end; return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..dany_artykul[2],frame.args["przedrostek"],frame.args["skrót"],frame.args["łącznik"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,dany_artykul[2],frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,dany_artykul[2],frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,dany_artykul[2],frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="tekst")then local tekst=dany_artykul[2]; if(tekst)then local tekst=pf:preprocess(tekst); return tekst; end; return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else if(dany_artykul[2])then local tytul_szablonu=frame.args["nazwa szablonu"] or szablonowe_modul.NazwaSzablonu(frame:getParent():getTitle()); local tab_naglowek=stronicowyparser_obiekty_modul.linki_szablony_wprowadzenia_tekstu[nazwa_obiektu]; local adres=dany_artykul[2][2]; local czy_w_tym_szablony=mw.ustring.match(adres,"{{[^{}]+}}"); if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); adres=specjalne_modul["PrzetwórzNagłówek"](adres,true); end; local adres=dany_artykul[2][1].."#"..adres; if(tytul_szablonu==tab_naglowek[1])then local naglowek=dany_artykul[2][3]; if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false); end; return link(adres,nil,nil,nil,naglowek,frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron); elseif(tytul_szablonu==tab_naglowek[2])then return link(adres,nil,nil,nil,"tutaj",frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron); end; end; end; end; end; end; end; end; if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..html_modul.EncodeId(uchwyt_obiektu,true),frame.args["przedrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,nil,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,nil,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],nil,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,nil,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; end; return p; 9hztgm0cso2qdunwjsrvtvug07u63gz 552787 552783 2026-08-22T05:40:00Z Persino 2851 552787 Scribunto text/plain local p={}; function p.NumerObiektu(frame, nazwa_obiektu) local pf=frame:getParent(); local parametry_modul=require("Module:Parametry"); local uchwyt_obiektu=frame.args["uchwyt"]; local bez_automatu=parametry_modul.CzyTak(frame.args["bez automatu"]); local html_modul=require("Module:Html"); uchwyt_obiektu=uchwyt_obiektu and html_modul.DecodeHtml(uchwyt_obiektu,true) or nil; local nazwa_strony; local html_modul=require("Module:Html"); local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local techniczne_modul=require("Module:Techniczne"); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu; nazwa_artykulu=frame.args["nazwa artykułu"]; nazwa_ksiazki=frame.args["nazwa książki"]; local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych; local czy_table_tablica_transportu=parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki); local czy_aktualna_strona=nil; local nazwa_przestrzeni_nazw=pf.args["nazwa przestrzeni nazw"]; local nazwa_jednostki=pf.args["nazwa jednostki"]; if((nazwa_przestrzeni_nazw) or (nazwa_jednostki))then if(((not nazwa_artykulu)and(not nazwa_ksiazki)) or((nazwa_artykulu)and(not nazwa_ksiazki)))then if(nazwa_przestrzeni_nazw)then nazwa_przestrzeni_nazw=html_modul.DecodeHtml(nazwa_przestrzeni_nazw,true); end; if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local ksiazkowe_modul=require("Module:Książkowe"); local tabela_nazw_poczatkowe={}; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_poczatkowe); local nazwa_jednostki=nazwa_jednostki or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_poczatkowe); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={};local tabela_nazw_aktualna={}; strona=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); local aktualna_strona=ksiazkowe_modul["PełnaNazwaArtykułu"](nil,tabela_nazw_aktualna); if(strona~=aktualna_strona)then nazwa_artykulu=nazwa_artykulu or nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki_aktualna=ksiazkowe_modul["PełnaNazwaKsiążki"](nil,tabela_nazw_aktualna); local nazwa_ksiazki_strony=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(nazwa_ksiazki_aktualna~=nazwa_ksiazki_strony)then nazwa_ksiazki=nazwa_ksiazki or nazwa_ksiazki_strony; end; end; end; end; if((not nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=1; nazwa_strony=""; elseif((nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=2; nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; end; end; else local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu); nazwa_ksiazki=html_modul.DecodeHtml(nazwa_ksiazki,true); nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_ksiazki,[2]=nazwa_modulu,}; local ksiazkawe_modul=require("Module:Książkowe"); local tabela_nazw={}; nazwa_ksiazki=ksiazkawe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); if((nazwa_artykulu)and(nazwa_artykulu~=""))then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; else nazwa_artykulu=""; end; nazwa_strony=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; nazwa_strony=strona; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; else czy_aktualna_strona=2; nazwa_strony=strona; end; end; end; local link = function(adres_linku,przedrostek,przyrostek,skrot,lacznik,nazwa_linku,klasa,styl,link_wikidane,nazwy_woluminowe_stron) local czy_klasa=parametry_modul.CzyTak(klasa); local czy_styl=parametry_modul.CzyTak(styl); local spanramka_dziecko=mw.html.create('span'); if(czy_klasa)then spanramka_dziecko:attr("class",klasa);end; if(czy_styl)then spanramka_dziecko:attr('style',styl);end; local czy_skrot=parametry_modul.CzyTak(skrot); nazwa_linku=(przedrostek or "") ..(czy_skrot and (skrot..lacznik) or ((skrot and lacznik) and (function() if(nazwy_woluminowe_stron)then local podstrona=nazwy_woluminowe_stron[1]; local pozawoluminowe_strony=nazwy_woluminowe_stron[2]; local czy_artykul_korzystany=nazwy_woluminowe_stron[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return podstrona..lacznik; end; end; end; return ""; end)() or "") )..nazwa_linku..(przyrostek and (function() local podstrona=nazwy_woluminowe_stron[1]; local pozawoluminowe_strony=nazwy_woluminowe_stron[2]; local czy_artykul_korzystany=nazwy_woluminowe_stron[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return "&nbsp;".."("..(przyrostek or "")..(czy_skrot and skrot or podstrona)..")"; end; end; end)() or ""); spanramka_dziecko:wikitext(nazwa_linku); local kod_html=tostring(spanramka_dziecko:allDone()); ---- local spanramka=mw.html.create('span'); if((link_wikidane)and(link_wikidane[1]))then spanramka:addClass("link"); spanramka:addClass(link_wikidane[1]); end; ---- local linki_modul=require("Module:Linki"); linki_modul.LinkOgromne(spanramka,nazwa_linku); ---- local link="[["..adres_linku.."|"..kod_html.."]]"; spanramka:wikitext(link); local kod_html=spanramka:allDone(); return tostring(kod_html); end; local wzor = function(uchwyt,numeracja,styl_main,styl_odstepu,pole_odstepu,styl_wzoru,klasa_wzoru,wzor,opis,opis2,klasa_opisu,styl_opisu,styl_opisu_2,wzor_opisu,wzor_opisu_2,styl_alternatywy_opisu,styl_alternatywy_opisu_2,pozycja_numeracji,klasa_numeracji,styl_numeracji,bez_automatu) local divramka=mw.html.create('div'); local parametry_modul=require("Module:Parametry"); local czy_pozycja_numeracji_prawa=parametry_modul.CzyTak(pozycja_numeracji); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',"wzór_"..html_modul.EncodeId(uchwyt,true)); else if(numeracja)then divramka:attr('id',"wzór_"..numeracja); else divramka:attr('id',"niedopasowany-wzór_"..html_modul.EncodeId(uchwyt,true)); end; end; end; if(parametry_modul.CzyTak(styl_main))then divramka:attr('style',styl_main); end; local uchwyt_fun=function() if(parametry_modul.CzyTak(uchwyt))then local divuchwytramka=mw.html.create('div'); divuchwytramka:attr('class',klasa_numeracji); divuchwytramka:attr('style',styl_numeracji); if(parametry_modul.CzyTak(bez_automatu))then divuchwytramka:wikitext('(',uchwyt..")"); else if(numeracja)then divuchwytramka:wikitext('('..numeracja..")"); else divuchwytramka:wikitext("(Niedopasowany uchwyt: "..uchwyt..")"); end; end; divramka:node(divuchwytramka); end; end; local pole_odstepu_fun=function() divramka:addClass("wzory"); local divramka2=mw.html.create('div'); divramka2:attr('style',styl_odstepu); divramka2:wikitext(pole_odstepu); divramka:node(divramka2); end; local opis_fun=function(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu) if(parametry_modul.CzyTak(opis))then local divramka5=mw.html.create('div') divramka5:attr('class',klasa_opisu) divramka5:attr('style',styl_opisu) divramka5:wikitext(wzor_opisu) divramka:node(divramka5) else local divramka5=mw.html.create('div'); divramka5:attr('style',styl_alternatywy_opisu); divramka:node(divramka5) end; end; if(not czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; opis_fun(opis2,styl_opisu_2,wzor_opisu_2,styl_alternatywy_opisu_2); local divramka4=mw.html.create('div'); divramka4:attr('class',klasa_wzoru); divramka4:attr('style',styl_wzoru); divramka4:wikitext(wzor); divramka:node(divramka4); opis_fun(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu); if(czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; return tostring(divramka:allDone()); end; local rysunek=function(uchwyt,numeracja,opis, rysunek, pozycja,rozmiar,klasa,styl,bez_automatu) local czy_uchwyt=parametry_modul.CzyTak(uchwyt); local id; if(czy_uchwyt)then if(numeracja)then if(parametry_modul.CzyTak(bez_automatu))then id="rysunek_"..html_modul.EncodeId(uchwyt,true); else id="rysunek_"..numeracja; end; else id="niedopasowany-rysunek_"..html_modul.EncodeHtml(uchwyt,true); end; end; local czy_opis=parametry_modul.CzyTak(opis); local plik_modul=require("Module:Plik"); local wywolanie_rysunku=plik_modul.Plik{ plik=((rysunek)and rysunek or "Przykładowy rysunek.svg"), id=id, styl=styl, klasa=klasa, ramka="mały", pozycja=pozycja or "prawo", rozmiar=(rozmiar or "200px"), opis=((czy_uchwyt or czy_opis)and (((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or ""), }; --local wywolanie_rysunku="[[File:"..((rysunek)and rysunek or "Przykładowy rysunek.svg").."|thumb|"..(pozycja or "right").."|"..(rozmiar or "200px")..((czy_uchwyt or czy_opis)and ("|"..((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or "").."]]"; return tostring(wywolanie_rysunku); end; local wypowiedzenie = function(uchwyt,przedrostek,numeracja,klasa,styl,przedrostek2,rodzaj,kogo,czego,jakie,styl_naglowka,styl_tekstu,tekst,bez_automatu) local divramka=mw.html.create('div'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',przedrostek.."_"..html_modul.EncodeId(uchwyt,true)); else divramka:attr('id',((not numeracja)and "niedopasowany-" or "")..przedrostek.."_"..(numeracja or html_modul.EncodeId(uchwyt,true))); end; end; divramka:attr('class',klasa); divramka:attr('style',styl); local wikitext=""; if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then wikitext="("..przedrostek2.." "..uchwyt..")"; else if(numeracja)then wikitext="("..przedrostek2.." "..numeracja..")"; else wikitext="("..przedrostek2.." Niedopawany uchwyt: "..uchwyt..")"; end; end; end; if(parametry_modul.CzyTak(styl_naglowka))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_naglowka); spanramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); divramka:node(spanramka); else divramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); end; divramka:wikitext('<BR>'); if(parametry_modul.CzyTak(styl_tekstu))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_tekstu); spanramka:wikitext(tekst); divramka:node(spanramka); else divramka:wikitext(tekst); end; return tostring(divramka:allDone()); end; local punkty = function(uchwyt,numeracja,przedrostek_id,klasa,styl,prefiks,bez_automatu) local spanramka=mw.html.create('sup'); spanramka:attr('style',klasa); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then spanramka:attr('id',przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); else if(parametry_modul.CzyTak(numeracja))then spanramka:attr('id',przedrostek_id.."_"..numeracja); else spanramka:attr('id',"niedopasowany-"..przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); end; end; end; spanramka:attr('style',styl); local smallramka=mw.html.create('small'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then smallramka:wikitext('['..prefiks..": "..uchwyt..']'); else if(parametry_modul.CzyTak(numeracja))then smallramka:wikitext('['..prefiks..": "..numeracja..']'); else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: "..uchwyt..']'); end; end; else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: brak uchwytu]"); end; spanramka:node(smallramka); return tostring(spanramka:allDone()); end; local nazwa_strony_fun=function(nazwa_strony) if((nazwa_strony)and(nazwa_strony==""))then return "";end; if(czy_aktualna_strona)then if(czy_aktualna_strona==1)then return ""; elseif(czy_aktualna_strona==2)then if(tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return "";end; end; else if((tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and (tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return ""; end; end; return html_modul.EncodeId(nazwa_strony); end; local function BladTablicyTransportu(czy_table_tablica_transportu) if(not czy_table_tablica_transportu)then local blad_modul=require("Module:Błąd"); return blad_modul.error{tekst="Błąd stronicowego parsera: '''Moduł:StronicowyParser'''. Tablica silnika transportu lub jego składowe przyjmują wartość nietabelkową.",tag="strong",}; end; return ""; end; local function BezNumeracjiZUchwytami() if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(uchwyt_obiektu)then local uchwyt_obiektu=html_modul.EncodeId(uchwyt_obiektu,true); return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"])..")"; else local uchwyt_obiektu=parametry_modul.CzyTak(uchwyt_obiektu) and html_modul.EncodeId(uchwyt_obiektu,true) or nil; return "("..link(nazwa_strony.."#"..frame.args["id"].."_".."Nieznany uchwyt",frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..(uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"])..")"; end; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,uchwyt_obiektu,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,uchwyt_obiektu,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,uchwyt_obiektu,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return uchwyt_obiektu; end; else return uchwyt_obiektu; end; end; if((not czy_table_tablica_transportu)or(parametry_modul.CzyTak(frame.args["bez automatu"])))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(czy_table_tablica_transportu); end; local link_wikidane;local nazwy_woluminowe_stron; local tabela_listy_uchwytow_i_numeracji_na_stronie; if(czy_aktualna_strona==nil)then local dane_analizy_artykulu=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(dane_analizy_artykulu)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni=dane_analizy_artykulu[nazwa_przestrzeni]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; nazwy_woluminowe_stron=tabela_listy_analizy_na_stronie.nazwy_woluminowe_stron; end; end; end; end; end; end; elseif(czy_aktualna_strona==1)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu; link_wikidane=tabela_listy_danych_analizy_ksiazki.link_wikidane; nazwy_woluminowe_stron=tabela_listy_danych_analizy_ksiazki.nazwy_woluminowe_stron; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_na_stronie))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; elseif(czy_aktualna_strona==2)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; nazwy_woluminowe_stron=tabela_listy_analizy_na_stronie.nazwy_woluminowe_stron; end; end; end; end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); if(tabela_listy_uchwytow_i_numeracji_na_stronie)then local spis_uchwytow=tabela_listy_uchwytow_i_numeracji_na_stronie[nazwa_obiektu]; local uchwyty_bez_numeracji=spis_uchwytow.uchwyty_bez_numeracji; spis_uchwytow=uchwyty_bez_numeracji or spis_uchwytow; if(spis_uchwytow)then if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then local UchwytObiektu=function(uchwyt_obiektu) if(uchwyty_bez_numeracji)then return uchwyt_obiektu[1]; end; return uchwyt_obiektu; end; for _, dany_artykul in ipairs(spis_uchwytow)do if(UchwytObiektu(dany_artykul[1])==uchwyt_obiektu)then if(not uchwyty_bez_numeracji)then if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(not dany_artykul[2])then return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; end; return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..dany_artykul[2],frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,dany_artykul[2],frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,dany_artykul[2],frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,dany_artykul[2],frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="tekst")then local tekst=dany_artykul[2]; if(tekst)then local tekst=pf:preprocess(tekst); return tekst; end; return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else if(dany_artykul[2])then local tytul_szablonu=frame.args["nazwa szablonu"] or szablonowe_modul.NazwaSzablonu(frame:getParent():getTitle()); local tab_naglowek=stronicowyparser_obiekty_modul.linki_szablony_wprowadzenia_tekstu[nazwa_obiektu]; local adres=dany_artykul[2][2]; local czy_w_tym_szablony=mw.ustring.match(adres,"{{[^{}]+}}"); if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); adres=specjalne_modul["PrzetwórzNagłówek"](adres,true); end; local adres=dany_artykul[2][1].."#"..adres; if(tytul_szablonu==tab_naglowek[1])then local naglowek=dany_artykul[2][3]; if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false); end; return link(adres,nil,frame.args["przyrostek"],nil,nil,naglowek,frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron); elseif(tytul_szablonu==tab_naglowek[2])then return link(adres,nil,nil,nil,nil,"tutaj",frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron); end; end; end; end; end; end; end; end; if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..html_modul.EncodeId(uchwyt_obiektu,true),frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,nil,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,nil,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],nil,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,nil,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; end; return p; 5vdq368b2v86q155rl7hwzxtmq6f8kt 552789 552787 2026-08-22T05:47:39Z Persino 2851 552789 Scribunto text/plain local p={}; function p.NumerObiektu(frame, nazwa_obiektu) local pf=frame:getParent(); local parametry_modul=require("Module:Parametry"); local uchwyt_obiektu=frame.args["uchwyt"]; local bez_automatu=parametry_modul.CzyTak(frame.args["bez automatu"]); local html_modul=require("Module:Html"); uchwyt_obiektu=uchwyt_obiektu and html_modul.DecodeHtml(uchwyt_obiektu,true) or nil; local nazwa_strony; local html_modul=require("Module:Html"); local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local techniczne_modul=require("Module:Techniczne"); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu; nazwa_artykulu=frame.args["nazwa artykułu"]; nazwa_ksiazki=frame.args["nazwa książki"]; local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych; local czy_table_tablica_transportu=parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki); local czy_aktualna_strona=nil; local nazwa_przestrzeni_nazw=pf.args["nazwa przestrzeni nazw"]; local nazwa_jednostki=pf.args["nazwa jednostki"]; if((nazwa_przestrzeni_nazw) or (nazwa_jednostki))then if(((not nazwa_artykulu)and(not nazwa_ksiazki)) or((nazwa_artykulu)and(not nazwa_ksiazki)))then if(nazwa_przestrzeni_nazw)then nazwa_przestrzeni_nazw=html_modul.DecodeHtml(nazwa_przestrzeni_nazw,true); end; if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local ksiazkowe_modul=require("Module:Książkowe"); local tabela_nazw_poczatkowe={}; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_poczatkowe); local nazwa_jednostki=nazwa_jednostki or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_poczatkowe); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={};local tabela_nazw_aktualna={}; strona=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); local aktualna_strona=ksiazkowe_modul["PełnaNazwaArtykułu"](nil,tabela_nazw_aktualna); if(strona~=aktualna_strona)then nazwa_artykulu=nazwa_artykulu or nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki_aktualna=ksiazkowe_modul["PełnaNazwaKsiążki"](nil,tabela_nazw_aktualna); local nazwa_ksiazki_strony=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(nazwa_ksiazki_aktualna~=nazwa_ksiazki_strony)then nazwa_ksiazki=nazwa_ksiazki or nazwa_ksiazki_strony; end; end; end; end; if((not nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=1; nazwa_strony=""; elseif((nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=2; nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; end; end; else local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu); nazwa_ksiazki=html_modul.DecodeHtml(nazwa_ksiazki,true); nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_ksiazki,[2]=nazwa_modulu,}; local ksiazkawe_modul=require("Module:Książkowe"); local tabela_nazw={}; nazwa_ksiazki=ksiazkawe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); if((nazwa_artykulu)and(nazwa_artykulu~=""))then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; else nazwa_artykulu=""; end; nazwa_strony=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; nazwa_strony=strona; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; else czy_aktualna_strona=2; nazwa_strony=strona; end; end; end; local link = function(adres_linku,przedrostek,przyrostek,skrot,lacznik,nazwa_linku,klasa,styl,link_wikidane,nazwy_woluminowe_stron) local czy_klasa=parametry_modul.CzyTak(klasa); local czy_styl=parametry_modul.CzyTak(styl); local spanramka_dziecko=mw.html.create('span'); if(czy_klasa)then spanramka_dziecko:attr("class",klasa);end; if(czy_styl)then spanramka_dziecko:attr('style',styl);end; local czy_skrot=parametry_modul.CzyTak(skrot); nazwa_linku=(przedrostek or "") ..(czy_skrot and (skrot..lacznik) or ((przedrostek and skrot and lacznik) and (function() if(nazwy_woluminowe_stron)then local podstrona=nazwy_woluminowe_stron[1]; local pozawoluminowe_strony=nazwy_woluminowe_stron[2]; local czy_artykul_korzystany=nazwy_woluminowe_stron[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return podstrona..lacznik; end; end; end; return ""; end)() or "") )..nazwa_linku..(przyrostek and (function() local podstrona=nazwy_woluminowe_stron[1]; local pozawoluminowe_strony=nazwy_woluminowe_stron[2]; local czy_artykul_korzystany=nazwy_woluminowe_stron[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return "&nbsp;".."("..(przyrostek or "")..(czy_skrot and skrot or podstrona)..")"; end; end; end)() or ""); spanramka_dziecko:wikitext(nazwa_linku); local kod_html=tostring(spanramka_dziecko:allDone()); ---- local spanramka=mw.html.create('span'); if((link_wikidane)and(link_wikidane[1]))then spanramka:addClass("link"); spanramka:addClass(link_wikidane[1]); end; ---- local linki_modul=require("Module:Linki"); linki_modul.LinkOgromne(spanramka,nazwa_linku); ---- local link="[["..adres_linku.."|"..kod_html.."]]"; spanramka:wikitext(link); local kod_html=spanramka:allDone(); return tostring(kod_html); end; local wzor = function(uchwyt,numeracja,styl_main,styl_odstepu,pole_odstepu,styl_wzoru,klasa_wzoru,wzor,opis,opis2,klasa_opisu,styl_opisu,styl_opisu_2,wzor_opisu,wzor_opisu_2,styl_alternatywy_opisu,styl_alternatywy_opisu_2,pozycja_numeracji,klasa_numeracji,styl_numeracji,bez_automatu) local divramka=mw.html.create('div'); local parametry_modul=require("Module:Parametry"); local czy_pozycja_numeracji_prawa=parametry_modul.CzyTak(pozycja_numeracji); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',"wzór_"..html_modul.EncodeId(uchwyt,true)); else if(numeracja)then divramka:attr('id',"wzór_"..numeracja); else divramka:attr('id',"niedopasowany-wzór_"..html_modul.EncodeId(uchwyt,true)); end; end; end; if(parametry_modul.CzyTak(styl_main))then divramka:attr('style',styl_main); end; local uchwyt_fun=function() if(parametry_modul.CzyTak(uchwyt))then local divuchwytramka=mw.html.create('div'); divuchwytramka:attr('class',klasa_numeracji); divuchwytramka:attr('style',styl_numeracji); if(parametry_modul.CzyTak(bez_automatu))then divuchwytramka:wikitext('(',uchwyt..")"); else if(numeracja)then divuchwytramka:wikitext('('..numeracja..")"); else divuchwytramka:wikitext("(Niedopasowany uchwyt: "..uchwyt..")"); end; end; divramka:node(divuchwytramka); end; end; local pole_odstepu_fun=function() divramka:addClass("wzory"); local divramka2=mw.html.create('div'); divramka2:attr('style',styl_odstepu); divramka2:wikitext(pole_odstepu); divramka:node(divramka2); end; local opis_fun=function(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu) if(parametry_modul.CzyTak(opis))then local divramka5=mw.html.create('div') divramka5:attr('class',klasa_opisu) divramka5:attr('style',styl_opisu) divramka5:wikitext(wzor_opisu) divramka:node(divramka5) else local divramka5=mw.html.create('div'); divramka5:attr('style',styl_alternatywy_opisu); divramka:node(divramka5) end; end; if(not czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; opis_fun(opis2,styl_opisu_2,wzor_opisu_2,styl_alternatywy_opisu_2); local divramka4=mw.html.create('div'); divramka4:attr('class',klasa_wzoru); divramka4:attr('style',styl_wzoru); divramka4:wikitext(wzor); divramka:node(divramka4); opis_fun(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu); if(czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; return tostring(divramka:allDone()); end; local rysunek=function(uchwyt,numeracja,opis, rysunek, pozycja,rozmiar,klasa,styl,bez_automatu) local czy_uchwyt=parametry_modul.CzyTak(uchwyt); local id; if(czy_uchwyt)then if(numeracja)then if(parametry_modul.CzyTak(bez_automatu))then id="rysunek_"..html_modul.EncodeId(uchwyt,true); else id="rysunek_"..numeracja; end; else id="niedopasowany-rysunek_"..html_modul.EncodeHtml(uchwyt,true); end; end; local czy_opis=parametry_modul.CzyTak(opis); local plik_modul=require("Module:Plik"); local wywolanie_rysunku=plik_modul.Plik{ plik=((rysunek)and rysunek or "Przykładowy rysunek.svg"), id=id, styl=styl, klasa=klasa, ramka="mały", pozycja=pozycja or "prawo", rozmiar=(rozmiar or "200px"), opis=((czy_uchwyt or czy_opis)and (((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or ""), }; --local wywolanie_rysunku="[[File:"..((rysunek)and rysunek or "Przykładowy rysunek.svg").."|thumb|"..(pozycja or "right").."|"..(rozmiar or "200px")..((czy_uchwyt or czy_opis)and ("|"..((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or "").."]]"; return tostring(wywolanie_rysunku); end; local wypowiedzenie = function(uchwyt,przedrostek,numeracja,klasa,styl,przedrostek2,rodzaj,kogo,czego,jakie,styl_naglowka,styl_tekstu,tekst,bez_automatu) local divramka=mw.html.create('div'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',przedrostek.."_"..html_modul.EncodeId(uchwyt,true)); else divramka:attr('id',((not numeracja)and "niedopasowany-" or "")..przedrostek.."_"..(numeracja or html_modul.EncodeId(uchwyt,true))); end; end; divramka:attr('class',klasa); divramka:attr('style',styl); local wikitext=""; if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then wikitext="("..przedrostek2.." "..uchwyt..")"; else if(numeracja)then wikitext="("..przedrostek2.." "..numeracja..")"; else wikitext="("..przedrostek2.." Niedopawany uchwyt: "..uchwyt..")"; end; end; end; if(parametry_modul.CzyTak(styl_naglowka))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_naglowka); spanramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); divramka:node(spanramka); else divramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); end; divramka:wikitext('<BR>'); if(parametry_modul.CzyTak(styl_tekstu))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_tekstu); spanramka:wikitext(tekst); divramka:node(spanramka); else divramka:wikitext(tekst); end; return tostring(divramka:allDone()); end; local punkty = function(uchwyt,numeracja,przedrostek_id,klasa,styl,prefiks,bez_automatu) local spanramka=mw.html.create('sup'); spanramka:attr('style',klasa); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then spanramka:attr('id',przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); else if(parametry_modul.CzyTak(numeracja))then spanramka:attr('id',przedrostek_id.."_"..numeracja); else spanramka:attr('id',"niedopasowany-"..przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); end; end; end; spanramka:attr('style',styl); local smallramka=mw.html.create('small'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then smallramka:wikitext('['..prefiks..": "..uchwyt..']'); else if(parametry_modul.CzyTak(numeracja))then smallramka:wikitext('['..prefiks..": "..numeracja..']'); else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: "..uchwyt..']'); end; end; else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: brak uchwytu]"); end; spanramka:node(smallramka); return tostring(spanramka:allDone()); end; local nazwa_strony_fun=function(nazwa_strony) if((nazwa_strony)and(nazwa_strony==""))then return "";end; if(czy_aktualna_strona)then if(czy_aktualna_strona==1)then return ""; elseif(czy_aktualna_strona==2)then if(tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return "";end; end; else if((tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and (tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return ""; end; end; return html_modul.EncodeId(nazwa_strony); end; local function BladTablicyTransportu(czy_table_tablica_transportu) if(not czy_table_tablica_transportu)then local blad_modul=require("Module:Błąd"); return blad_modul.error{tekst="Błąd stronicowego parsera: '''Moduł:StronicowyParser'''. Tablica silnika transportu lub jego składowe przyjmują wartość nietabelkową.",tag="strong",}; end; return ""; end; local function BezNumeracjiZUchwytami() if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(uchwyt_obiektu)then local uchwyt_obiektu=html_modul.EncodeId(uchwyt_obiektu,true); return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"])..")"; else local uchwyt_obiektu=parametry_modul.CzyTak(uchwyt_obiektu) and html_modul.EncodeId(uchwyt_obiektu,true) or nil; return "("..link(nazwa_strony.."#"..frame.args["id"].."_".."Nieznany uchwyt",frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..(uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"])..")"; end; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,uchwyt_obiektu,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,uchwyt_obiektu,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,uchwyt_obiektu,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return uchwyt_obiektu; end; else return uchwyt_obiektu; end; end; if((not czy_table_tablica_transportu)or(parametry_modul.CzyTak(frame.args["bez automatu"])))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(czy_table_tablica_transportu); end; local link_wikidane;local nazwy_woluminowe_stron; local tabela_listy_uchwytow_i_numeracji_na_stronie; if(czy_aktualna_strona==nil)then local dane_analizy_artykulu=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(dane_analizy_artykulu)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni=dane_analizy_artykulu[nazwa_przestrzeni]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; nazwy_woluminowe_stron=tabela_listy_analizy_na_stronie.nazwy_woluminowe_stron; end; end; end; end; end; end; elseif(czy_aktualna_strona==1)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu; link_wikidane=tabela_listy_danych_analizy_ksiazki.link_wikidane; nazwy_woluminowe_stron=tabela_listy_danych_analizy_ksiazki.nazwy_woluminowe_stron; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_na_stronie))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; elseif(czy_aktualna_strona==2)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; nazwy_woluminowe_stron=tabela_listy_analizy_na_stronie.nazwy_woluminowe_stron; end; end; end; end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); if(tabela_listy_uchwytow_i_numeracji_na_stronie)then local spis_uchwytow=tabela_listy_uchwytow_i_numeracji_na_stronie[nazwa_obiektu]; local uchwyty_bez_numeracji=spis_uchwytow.uchwyty_bez_numeracji; spis_uchwytow=uchwyty_bez_numeracji or spis_uchwytow; if(spis_uchwytow)then if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then local UchwytObiektu=function(uchwyt_obiektu) if(uchwyty_bez_numeracji)then return uchwyt_obiektu[1]; end; return uchwyt_obiektu; end; for _, dany_artykul in ipairs(spis_uchwytow)do if(UchwytObiektu(dany_artykul[1])==uchwyt_obiektu)then if(not uchwyty_bez_numeracji)then if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(not dany_artykul[2])then return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; end; return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..dany_artykul[2],frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,dany_artykul[2],frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,dany_artykul[2],frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,dany_artykul[2],frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="tekst")then local tekst=dany_artykul[2]; if(tekst)then local tekst=pf:preprocess(tekst); return tekst; end; return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else if(dany_artykul[2])then local tytul_szablonu=frame.args["nazwa szablonu"] or szablonowe_modul.NazwaSzablonu(frame:getParent():getTitle()); local tab_naglowek=stronicowyparser_obiekty_modul.linki_szablony_wprowadzenia_tekstu[nazwa_obiektu]; local adres=dany_artykul[2][2]; local czy_w_tym_szablony=mw.ustring.match(adres,"{{[^{}]+}}"); if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); adres=specjalne_modul["PrzetwórzNagłówek"](adres,true); end; local adres=dany_artykul[2][1].."#"..adres; if(tytul_szablonu==tab_naglowek[1])then local naglowek=dany_artykul[2][3]; if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false); end; return link(adres,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],naglowek,frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron); elseif(tytul_szablonu==tab_naglowek[2])then return link(adres,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"tutaj",frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron); end; end; end; end; end; end; end; end; if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..html_modul.EncodeId(uchwyt_obiektu,true),frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,nil,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,nil,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],nil,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,nil,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; end; return p; cekhwroeg58p5d7rks92509rv811i9w 552790 552789 2026-08-22T05:49:44Z Persino 2851 552790 Scribunto text/plain local p={}; function p.NumerObiektu(frame, nazwa_obiektu) local pf=frame:getParent(); local parametry_modul=require("Module:Parametry"); local uchwyt_obiektu=frame.args["uchwyt"]; local bez_automatu=parametry_modul.CzyTak(frame.args["bez automatu"]); local html_modul=require("Module:Html"); uchwyt_obiektu=uchwyt_obiektu and html_modul.DecodeHtml(uchwyt_obiektu,true) or nil; local nazwa_strony; local html_modul=require("Module:Html"); local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local techniczne_modul=require("Module:Techniczne"); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu; nazwa_artykulu=frame.args["nazwa artykułu"]; nazwa_ksiazki=frame.args["nazwa książki"]; local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych; local czy_table_tablica_transportu=parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki); local czy_aktualna_strona=nil; local nazwa_przestrzeni_nazw=pf.args["nazwa przestrzeni nazw"]; local nazwa_jednostki=pf.args["nazwa jednostki"]; if((nazwa_przestrzeni_nazw) or (nazwa_jednostki))then if(((not nazwa_artykulu)and(not nazwa_ksiazki)) or((nazwa_artykulu)and(not nazwa_ksiazki)))then if(nazwa_przestrzeni_nazw)then nazwa_przestrzeni_nazw=html_modul.DecodeHtml(nazwa_przestrzeni_nazw,true); end; if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local ksiazkowe_modul=require("Module:Książkowe"); local tabela_nazw_poczatkowe={}; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_poczatkowe); local nazwa_jednostki=nazwa_jednostki or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_poczatkowe); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={};local tabela_nazw_aktualna={}; strona=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); local aktualna_strona=ksiazkowe_modul["PełnaNazwaArtykułu"](nil,tabela_nazw_aktualna); if(strona~=aktualna_strona)then nazwa_artykulu=nazwa_artykulu or nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki_aktualna=ksiazkowe_modul["PełnaNazwaKsiążki"](nil,tabela_nazw_aktualna); local nazwa_ksiazki_strony=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(nazwa_ksiazki_aktualna~=nazwa_ksiazki_strony)then nazwa_ksiazki=nazwa_ksiazki or nazwa_ksiazki_strony; end; end; end; end; if((not nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=1; nazwa_strony=""; elseif((nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=2; nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; end; end; else local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu); nazwa_ksiazki=html_modul.DecodeHtml(nazwa_ksiazki,true); nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_ksiazki,[2]=nazwa_modulu,}; local ksiazkawe_modul=require("Module:Książkowe"); local tabela_nazw={}; nazwa_ksiazki=ksiazkawe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); if((nazwa_artykulu)and(nazwa_artykulu~=""))then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; else nazwa_artykulu=""; end; nazwa_strony=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; nazwa_strony=strona; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; else czy_aktualna_strona=2; nazwa_strony=strona; end; end; end; local link = function(adres_linku,przedrostek,przyrostek,skrot,lacznik,nazwa_linku,klasa,styl,link_wikidane,nazwy_woluminowe_stron) local czy_klasa=parametry_modul.CzyTak(klasa); local czy_styl=parametry_modul.CzyTak(styl); local spanramka_dziecko=mw.html.create('span'); if(czy_klasa)then spanramka_dziecko:attr("class",klasa);end; if(czy_styl)then spanramka_dziecko:attr('style',styl);end; local czy_skrot=parametry_modul.CzyTak(skrot); nazwa_linku=(przedrostek or "") ..(czy_skrot and (skrot..lacznik) or ((przedrostek and skrot and lacznik) and (function() if(nazwy_woluminowe_stron)then local podstrona=nazwy_woluminowe_stron[1]; local pozawoluminowe_strony=nazwy_woluminowe_stron[2]; local czy_artykul_korzystany=nazwy_woluminowe_stron[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return podstrona..lacznik; end; end; end; return ""; end)() or "") )..nazwa_linku..(przyrostek and (function() if(nazwy_woluminowe_stron)then local podstrona=nazwy_woluminowe_stron[1]; local pozawoluminowe_strony=nazwy_woluminowe_stron[2]; local czy_artykul_korzystany=nazwy_woluminowe_stron[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return "&nbsp;".."("..(przyrostek or "")..(czy_skrot and skrot or podstrona)..")"; end; end; end; end)() or ""); spanramka_dziecko:wikitext(nazwa_linku); local kod_html=tostring(spanramka_dziecko:allDone()); ---- local spanramka=mw.html.create('span'); if((link_wikidane)and(link_wikidane[1]))then spanramka:addClass("link"); spanramka:addClass(link_wikidane[1]); end; ---- local linki_modul=require("Module:Linki"); linki_modul.LinkOgromne(spanramka,nazwa_linku); ---- local link="[["..adres_linku.."|"..kod_html.."]]"; spanramka:wikitext(link); local kod_html=spanramka:allDone(); return tostring(kod_html); end; local wzor = function(uchwyt,numeracja,styl_main,styl_odstepu,pole_odstepu,styl_wzoru,klasa_wzoru,wzor,opis,opis2,klasa_opisu,styl_opisu,styl_opisu_2,wzor_opisu,wzor_opisu_2,styl_alternatywy_opisu,styl_alternatywy_opisu_2,pozycja_numeracji,klasa_numeracji,styl_numeracji,bez_automatu) local divramka=mw.html.create('div'); local parametry_modul=require("Module:Parametry"); local czy_pozycja_numeracji_prawa=parametry_modul.CzyTak(pozycja_numeracji); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',"wzór_"..html_modul.EncodeId(uchwyt,true)); else if(numeracja)then divramka:attr('id',"wzór_"..numeracja); else divramka:attr('id',"niedopasowany-wzór_"..html_modul.EncodeId(uchwyt,true)); end; end; end; if(parametry_modul.CzyTak(styl_main))then divramka:attr('style',styl_main); end; local uchwyt_fun=function() if(parametry_modul.CzyTak(uchwyt))then local divuchwytramka=mw.html.create('div'); divuchwytramka:attr('class',klasa_numeracji); divuchwytramka:attr('style',styl_numeracji); if(parametry_modul.CzyTak(bez_automatu))then divuchwytramka:wikitext('(',uchwyt..")"); else if(numeracja)then divuchwytramka:wikitext('('..numeracja..")"); else divuchwytramka:wikitext("(Niedopasowany uchwyt: "..uchwyt..")"); end; end; divramka:node(divuchwytramka); end; end; local pole_odstepu_fun=function() divramka:addClass("wzory"); local divramka2=mw.html.create('div'); divramka2:attr('style',styl_odstepu); divramka2:wikitext(pole_odstepu); divramka:node(divramka2); end; local opis_fun=function(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu) if(parametry_modul.CzyTak(opis))then local divramka5=mw.html.create('div') divramka5:attr('class',klasa_opisu) divramka5:attr('style',styl_opisu) divramka5:wikitext(wzor_opisu) divramka:node(divramka5) else local divramka5=mw.html.create('div'); divramka5:attr('style',styl_alternatywy_opisu); divramka:node(divramka5) end; end; if(not czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; opis_fun(opis2,styl_opisu_2,wzor_opisu_2,styl_alternatywy_opisu_2); local divramka4=mw.html.create('div'); divramka4:attr('class',klasa_wzoru); divramka4:attr('style',styl_wzoru); divramka4:wikitext(wzor); divramka:node(divramka4); opis_fun(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu); if(czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; return tostring(divramka:allDone()); end; local rysunek=function(uchwyt,numeracja,opis, rysunek, pozycja,rozmiar,klasa,styl,bez_automatu) local czy_uchwyt=parametry_modul.CzyTak(uchwyt); local id; if(czy_uchwyt)then if(numeracja)then if(parametry_modul.CzyTak(bez_automatu))then id="rysunek_"..html_modul.EncodeId(uchwyt,true); else id="rysunek_"..numeracja; end; else id="niedopasowany-rysunek_"..html_modul.EncodeHtml(uchwyt,true); end; end; local czy_opis=parametry_modul.CzyTak(opis); local plik_modul=require("Module:Plik"); local wywolanie_rysunku=plik_modul.Plik{ plik=((rysunek)and rysunek or "Przykładowy rysunek.svg"), id=id, styl=styl, klasa=klasa, ramka="mały", pozycja=pozycja or "prawo", rozmiar=(rozmiar or "200px"), opis=((czy_uchwyt or czy_opis)and (((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or ""), }; --local wywolanie_rysunku="[[File:"..((rysunek)and rysunek or "Przykładowy rysunek.svg").."|thumb|"..(pozycja or "right").."|"..(rozmiar or "200px")..((czy_uchwyt or czy_opis)and ("|"..((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or "").."]]"; return tostring(wywolanie_rysunku); end; local wypowiedzenie = function(uchwyt,przedrostek,numeracja,klasa,styl,przedrostek2,rodzaj,kogo,czego,jakie,styl_naglowka,styl_tekstu,tekst,bez_automatu) local divramka=mw.html.create('div'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',przedrostek.."_"..html_modul.EncodeId(uchwyt,true)); else divramka:attr('id',((not numeracja)and "niedopasowany-" or "")..przedrostek.."_"..(numeracja or html_modul.EncodeId(uchwyt,true))); end; end; divramka:attr('class',klasa); divramka:attr('style',styl); local wikitext=""; if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then wikitext="("..przedrostek2.." "..uchwyt..")"; else if(numeracja)then wikitext="("..przedrostek2.." "..numeracja..")"; else wikitext="("..przedrostek2.." Niedopawany uchwyt: "..uchwyt..")"; end; end; end; if(parametry_modul.CzyTak(styl_naglowka))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_naglowka); spanramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); divramka:node(spanramka); else divramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); end; divramka:wikitext('<BR>'); if(parametry_modul.CzyTak(styl_tekstu))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_tekstu); spanramka:wikitext(tekst); divramka:node(spanramka); else divramka:wikitext(tekst); end; return tostring(divramka:allDone()); end; local punkty = function(uchwyt,numeracja,przedrostek_id,klasa,styl,prefiks,bez_automatu) local spanramka=mw.html.create('sup'); spanramka:attr('style',klasa); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then spanramka:attr('id',przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); else if(parametry_modul.CzyTak(numeracja))then spanramka:attr('id',przedrostek_id.."_"..numeracja); else spanramka:attr('id',"niedopasowany-"..przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); end; end; end; spanramka:attr('style',styl); local smallramka=mw.html.create('small'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then smallramka:wikitext('['..prefiks..": "..uchwyt..']'); else if(parametry_modul.CzyTak(numeracja))then smallramka:wikitext('['..prefiks..": "..numeracja..']'); else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: "..uchwyt..']'); end; end; else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: brak uchwytu]"); end; spanramka:node(smallramka); return tostring(spanramka:allDone()); end; local nazwa_strony_fun=function(nazwa_strony) if((nazwa_strony)and(nazwa_strony==""))then return "";end; if(czy_aktualna_strona)then if(czy_aktualna_strona==1)then return ""; elseif(czy_aktualna_strona==2)then if(tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return "";end; end; else if((tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and (tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return ""; end; end; return html_modul.EncodeId(nazwa_strony); end; local function BladTablicyTransportu(czy_table_tablica_transportu) if(not czy_table_tablica_transportu)then local blad_modul=require("Module:Błąd"); return blad_modul.error{tekst="Błąd stronicowego parsera: '''Moduł:StronicowyParser'''. Tablica silnika transportu lub jego składowe przyjmują wartość nietabelkową.",tag="strong",}; end; return ""; end; local function BezNumeracjiZUchwytami() if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(uchwyt_obiektu)then local uchwyt_obiektu=html_modul.EncodeId(uchwyt_obiektu,true); return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"])..")"; else local uchwyt_obiektu=parametry_modul.CzyTak(uchwyt_obiektu) and html_modul.EncodeId(uchwyt_obiektu,true) or nil; return "("..link(nazwa_strony.."#"..frame.args["id"].."_".."Nieznany uchwyt",frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..(uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"])..")"; end; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,uchwyt_obiektu,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,uchwyt_obiektu,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,uchwyt_obiektu,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return uchwyt_obiektu; end; else return uchwyt_obiektu; end; end; if((not czy_table_tablica_transportu)or(parametry_modul.CzyTak(frame.args["bez automatu"])))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(czy_table_tablica_transportu); end; local link_wikidane;local nazwy_woluminowe_stron; local tabela_listy_uchwytow_i_numeracji_na_stronie; if(czy_aktualna_strona==nil)then local dane_analizy_artykulu=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(dane_analizy_artykulu)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni=dane_analizy_artykulu[nazwa_przestrzeni]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; nazwy_woluminowe_stron=tabela_listy_analizy_na_stronie.nazwy_woluminowe_stron; end; end; end; end; end; end; elseif(czy_aktualna_strona==1)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu; link_wikidane=tabela_listy_danych_analizy_ksiazki.link_wikidane; nazwy_woluminowe_stron=tabela_listy_danych_analizy_ksiazki.nazwy_woluminowe_stron; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_na_stronie))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; elseif(czy_aktualna_strona==2)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; nazwy_woluminowe_stron=tabela_listy_analizy_na_stronie.nazwy_woluminowe_stron; end; end; end; end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); if(tabela_listy_uchwytow_i_numeracji_na_stronie)then local spis_uchwytow=tabela_listy_uchwytow_i_numeracji_na_stronie[nazwa_obiektu]; local uchwyty_bez_numeracji=spis_uchwytow.uchwyty_bez_numeracji; spis_uchwytow=uchwyty_bez_numeracji or spis_uchwytow; if(spis_uchwytow)then if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then local UchwytObiektu=function(uchwyt_obiektu) if(uchwyty_bez_numeracji)then return uchwyt_obiektu[1]; end; return uchwyt_obiektu; end; for _, dany_artykul in ipairs(spis_uchwytow)do if(UchwytObiektu(dany_artykul[1])==uchwyt_obiektu)then if(not uchwyty_bez_numeracji)then if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(not dany_artykul[2])then return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; end; return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..dany_artykul[2],frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,dany_artykul[2],frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,dany_artykul[2],frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,dany_artykul[2],frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="tekst")then local tekst=dany_artykul[2]; if(tekst)then local tekst=pf:preprocess(tekst); return tekst; end; return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else if(dany_artykul[2])then local tytul_szablonu=frame.args["nazwa szablonu"] or szablonowe_modul.NazwaSzablonu(frame:getParent():getTitle()); local tab_naglowek=stronicowyparser_obiekty_modul.linki_szablony_wprowadzenia_tekstu[nazwa_obiektu]; local adres=dany_artykul[2][2]; local czy_w_tym_szablony=mw.ustring.match(adres,"{{[^{}]+}}"); if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); adres=specjalne_modul["PrzetwórzNagłówek"](adres,true); end; local adres=dany_artykul[2][1].."#"..adres; if(tytul_szablonu==tab_naglowek[1])then local naglowek=dany_artykul[2][3]; if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false); end; return link(adres,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],naglowek,frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron); elseif(tytul_szablonu==tab_naglowek[2])then return link(adres,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"tutaj",frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron); end; end; end; end; end; end; end; end; if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..html_modul.EncodeId(uchwyt_obiektu,true),frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"],link_wikidane,nazwy_woluminowe_stron)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,nil,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,nil,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],nil,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,nil,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; end; return p; iz8z7xjvk1ztvx2rvpam4wyr4oxoc6g 552799 552790 2026-08-22T07:49:45Z Persino 2851 552799 Scribunto text/plain local p={}; function p.NumerObiektu(frame, nazwa_obiektu) local pf=frame:getParent(); local parametry_modul=require("Module:Parametry"); local uchwyt_obiektu=frame.args["uchwyt"]; local bez_automatu=parametry_modul.CzyTak(frame.args["bez automatu"]); local html_modul=require("Module:Html"); uchwyt_obiektu=uchwyt_obiektu and html_modul.DecodeHtml(uchwyt_obiektu,true) or nil; local nazwa_strony; local html_modul=require("Module:Html"); local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local techniczne_modul=require("Module:Techniczne"); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu; nazwa_artykulu=frame.args["nazwa artykułu"]; nazwa_ksiazki=frame.args["nazwa książki"]; local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych; local czy_table_tablica_transportu=parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki); local czy_aktualna_strona=nil; local nazwa_przestrzeni_nazw=pf.args["nazwa przestrzeni nazw"]; local nazwa_jednostki=pf.args["nazwa jednostki"]; if((nazwa_przestrzeni_nazw) or (nazwa_jednostki))then if(((not nazwa_artykulu)and(not nazwa_ksiazki)) or((nazwa_artykulu)and(not nazwa_ksiazki)))then if(nazwa_przestrzeni_nazw)then nazwa_przestrzeni_nazw=html_modul.DecodeHtml(nazwa_przestrzeni_nazw,true); end; if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local ksiazkowe_modul=require("Module:Książkowe"); local tabela_nazw_poczatkowe={}; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_poczatkowe); local nazwa_jednostki=nazwa_jednostki or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_poczatkowe); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={};local tabela_nazw_aktualna={}; strona=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); local aktualna_strona=ksiazkowe_modul["PełnaNazwaArtykułu"](nil,tabela_nazw_aktualna); if(strona~=aktualna_strona)then nazwa_artykulu=nazwa_artykulu or nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki_aktualna=ksiazkowe_modul["PełnaNazwaKsiążki"](nil,tabela_nazw_aktualna); local nazwa_ksiazki_strony=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(nazwa_ksiazki_aktualna~=nazwa_ksiazki_strony)then nazwa_ksiazki=nazwa_ksiazki or nazwa_ksiazki_strony; end; end; end; end; if((not nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=1; nazwa_strony=""; elseif((nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=2; nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; end; end; else local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu); nazwa_ksiazki=html_modul.DecodeHtml(nazwa_ksiazki,true); nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_ksiazki,[2]=nazwa_modulu,}; local ksiazkawe_modul=require("Module:Książkowe"); local tabela_nazw={}; nazwa_ksiazki=ksiazkawe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); if((nazwa_artykulu)and(nazwa_artykulu~=""))then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; else nazwa_artykulu=""; end; nazwa_strony=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; nazwa_strony=strona; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; else czy_aktualna_strona=2; nazwa_strony=strona; end; end; end; local link = function(adres_linku,przedrostek,przyrostek,skrot,lacznik,nazwa_linku,klasa,styl,link_wikidane,prefiks_numeru_woluminowego_stron) local czy_klasa=parametry_modul.CzyTak(klasa); local czy_styl=parametry_modul.CzyTak(styl); local spanramka_dziecko=mw.html.create('span'); if(czy_klasa)then spanramka_dziecko:attr("class",klasa);end; if(czy_styl)then spanramka_dziecko:attr('style',styl);end; local czy_skrot=parametry_modul.CzyTak(skrot); nazwa_linku=(przedrostek or "") ..(czy_skrot and (skrot..lacznik) or ((przedrostek and skrot and lacznik) and (function() if(prefiks_numeru_woluminowego_stron)then local podstrona=prefiks_numeru_woluminowego_stron[1]; local pozawoluminowe_strony=prefiks_numeru_woluminowego_stron[2]; local czy_artykul_korzystany=prefiks_numeru_woluminowego_stron[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return podstrona..lacznik; end; end; end; return ""; end)() or "") )..nazwa_linku..(przyrostek and (function() if(prefiks_numeru_woluminowego_stron)then local podstrona=prefiks_numeru_woluminowego_stron[1]; local pozawoluminowe_strony=prefiks_numeru_woluminowego_stron[2]; local czy_artykul_korzystany=prefiks_numeru_woluminowego_stron[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return "&nbsp;".."("..(przyrostek or "")..(czy_skrot and skrot or podstrona)..")"; end; end; end; end)() or ""); spanramka_dziecko:wikitext(nazwa_linku); local kod_html=tostring(spanramka_dziecko:allDone()); ---- local spanramka=mw.html.create('span'); if((link_wikidane)and(link_wikidane[1]))then spanramka:addClass("link"); spanramka:addClass(link_wikidane[1]); end; ---- local linki_modul=require("Module:Linki"); linki_modul.LinkOgromne(spanramka,nazwa_linku); ---- local link="[["..adres_linku.."|"..kod_html.."]]"; spanramka:wikitext(link); local kod_html=spanramka:allDone(); return tostring(kod_html); end; local wzor = function(uchwyt,numeracja,styl_main,styl_odstepu,pole_odstepu,styl_wzoru,klasa_wzoru,wzor,opis,opis2,klasa_opisu,styl_opisu,styl_opisu_2,wzor_opisu,wzor_opisu_2,styl_alternatywy_opisu,styl_alternatywy_opisu_2,pozycja_numeracji,klasa_numeracji,styl_numeracji,bez_automatu) local divramka=mw.html.create('div'); local parametry_modul=require("Module:Parametry"); local czy_pozycja_numeracji_prawa=parametry_modul.CzyTak(pozycja_numeracji); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',"wzór_"..html_modul.EncodeId(uchwyt,true)); else if(numeracja)then divramka:attr('id',"wzór_"..numeracja); else divramka:attr('id',"niedopasowany-wzór_"..html_modul.EncodeId(uchwyt,true)); end; end; end; if(parametry_modul.CzyTak(styl_main))then divramka:attr('style',styl_main); end; local uchwyt_fun=function() if(parametry_modul.CzyTak(uchwyt))then local divuchwytramka=mw.html.create('div'); divuchwytramka:attr('class',klasa_numeracji); divuchwytramka:attr('style',styl_numeracji); if(parametry_modul.CzyTak(bez_automatu))then divuchwytramka:wikitext('(',uchwyt..")"); else if(numeracja)then divuchwytramka:wikitext('('..numeracja..")"); else divuchwytramka:wikitext("(Niedopasowany uchwyt: "..uchwyt..")"); end; end; divramka:node(divuchwytramka); end; end; local pole_odstepu_fun=function() divramka:addClass("wzory"); local divramka2=mw.html.create('div'); divramka2:attr('style',styl_odstepu); divramka2:wikitext(pole_odstepu); divramka:node(divramka2); end; local opis_fun=function(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu) if(parametry_modul.CzyTak(opis))then local divramka5=mw.html.create('div') divramka5:attr('class',klasa_opisu) divramka5:attr('style',styl_opisu) divramka5:wikitext(wzor_opisu) divramka:node(divramka5) else local divramka5=mw.html.create('div'); divramka5:attr('style',styl_alternatywy_opisu); divramka:node(divramka5) end; end; if(not czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; opis_fun(opis2,styl_opisu_2,wzor_opisu_2,styl_alternatywy_opisu_2); local divramka4=mw.html.create('div'); divramka4:attr('class',klasa_wzoru); divramka4:attr('style',styl_wzoru); divramka4:wikitext(wzor); divramka:node(divramka4); opis_fun(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu); if(czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; return tostring(divramka:allDone()); end; local rysunek=function(uchwyt,numeracja,opis, rysunek, pozycja,rozmiar,klasa,styl,bez_automatu) local czy_uchwyt=parametry_modul.CzyTak(uchwyt); local id; if(czy_uchwyt)then if(numeracja)then if(parametry_modul.CzyTak(bez_automatu))then id="rysunek_"..html_modul.EncodeId(uchwyt,true); else id="rysunek_"..numeracja; end; else id="niedopasowany-rysunek_"..html_modul.EncodeHtml(uchwyt,true); end; end; local czy_opis=parametry_modul.CzyTak(opis); local plik_modul=require("Module:Plik"); local wywolanie_rysunku=plik_modul.Plik{ plik=((rysunek)and rysunek or "Przykładowy rysunek.svg"), id=id, styl=styl, klasa=klasa, ramka="mały", pozycja=pozycja or "prawo", rozmiar=(rozmiar or "200px"), opis=((czy_uchwyt or czy_opis)and (((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or ""), }; --local wywolanie_rysunku="[[File:"..((rysunek)and rysunek or "Przykładowy rysunek.svg").."|thumb|"..(pozycja or "right").."|"..(rozmiar or "200px")..((czy_uchwyt or czy_opis)and ("|"..((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or "").."]]"; return tostring(wywolanie_rysunku); end; local wypowiedzenie = function(uchwyt,przedrostek,numeracja,klasa,styl,przedrostek2,rodzaj,kogo,czego,jakie,styl_naglowka,styl_tekstu,tekst,bez_automatu) local divramka=mw.html.create('div'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',przedrostek.."_"..html_modul.EncodeId(uchwyt,true)); else divramka:attr('id',((not numeracja)and "niedopasowany-" or "")..przedrostek.."_"..(numeracja or html_modul.EncodeId(uchwyt,true))); end; end; divramka:attr('class',klasa); divramka:attr('style',styl); local wikitext=""; if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then wikitext="("..przedrostek2.." "..uchwyt..")"; else if(numeracja)then wikitext="("..przedrostek2.." "..numeracja..")"; else wikitext="("..przedrostek2.." Niedopawany uchwyt: "..uchwyt..")"; end; end; end; if(parametry_modul.CzyTak(styl_naglowka))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_naglowka); spanramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); divramka:node(spanramka); else divramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); end; divramka:wikitext('<BR>'); if(parametry_modul.CzyTak(styl_tekstu))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_tekstu); spanramka:wikitext(tekst); divramka:node(spanramka); else divramka:wikitext(tekst); end; return tostring(divramka:allDone()); end; local punkty = function(uchwyt,numeracja,przedrostek_id,klasa,styl,prefiks,bez_automatu) local spanramka=mw.html.create('sup'); spanramka:attr('style',klasa); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then spanramka:attr('id',przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); else if(parametry_modul.CzyTak(numeracja))then spanramka:attr('id',przedrostek_id.."_"..numeracja); else spanramka:attr('id',"niedopasowany-"..przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); end; end; end; spanramka:attr('style',styl); local smallramka=mw.html.create('small'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then smallramka:wikitext('['..prefiks..": "..uchwyt..']'); else if(parametry_modul.CzyTak(numeracja))then smallramka:wikitext('['..prefiks..": "..numeracja..']'); else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: "..uchwyt..']'); end; end; else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: brak uchwytu]"); end; spanramka:node(smallramka); return tostring(spanramka:allDone()); end; local nazwa_strony_fun=function(nazwa_strony) if((nazwa_strony)and(nazwa_strony==""))then return "";end; if(czy_aktualna_strona)then if(czy_aktualna_strona==1)then return ""; elseif(czy_aktualna_strona==2)then if(tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return "";end; end; else if((tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and (tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return ""; end; end; return html_modul.EncodeId(nazwa_strony); end; local function BladTablicyTransportu(czy_table_tablica_transportu) if(not czy_table_tablica_transportu)then local blad_modul=require("Module:Błąd"); return blad_modul.error{tekst="Błąd stronicowego parsera: '''Moduł:StronicowyParser'''. Tablica silnika transportu lub jego składowe przyjmują wartość nietabelkową.",tag="strong",}; end; return ""; end; local function BezNumeracjiZUchwytami() if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(uchwyt_obiektu)then local uchwyt_obiektu=html_modul.EncodeId(uchwyt_obiektu,true); return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"])..")"; else local uchwyt_obiektu=parametry_modul.CzyTak(uchwyt_obiektu) and html_modul.EncodeId(uchwyt_obiektu,true) or nil; return "("..link(nazwa_strony.."#"..frame.args["id"].."_".."Nieznany uchwyt",frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..(uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"])..")"; end; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,uchwyt_obiektu,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,uchwyt_obiektu,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,uchwyt_obiektu,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return uchwyt_obiektu; end; else return uchwyt_obiektu; end; end; if((not czy_table_tablica_transportu)or(parametry_modul.CzyTak(frame.args["bez automatu"])))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(czy_table_tablica_transportu); end; local link_wikidane;local prefiks_numeru_woluminowego_stron; local tabela_listy_uchwytow_i_numeracji_na_stronie; if(czy_aktualna_strona==nil)then local dane_analizy_artykulu=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(dane_analizy_artykulu)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni=dane_analizy_artykulu[nazwa_przestrzeni]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; prefiks_numeru_woluminowego_stron=tabela_listy_analizy_na_stronie.prefiks_numeru_woluminowego_stron; end; end; end; end; end; end; elseif(czy_aktualna_strona==1)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu; link_wikidane=tabela_listy_danych_analizy_ksiazki.link_wikidane; prefiks_numeru_woluminowego_stron=tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_stron; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_na_stronie))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; elseif(czy_aktualna_strona==2)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; prefiks_numeru_woluminowego_stron=tabela_listy_analizy_na_stronie.prefiks_numeru_woluminowego_stron; end; end; end; end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); if(tabela_listy_uchwytow_i_numeracji_na_stronie)then local spis_uchwytow=tabela_listy_uchwytow_i_numeracji_na_stronie[nazwa_obiektu]; local uchwyty_bez_numeracji=spis_uchwytow.uchwyty_bez_numeracji; spis_uchwytow=uchwyty_bez_numeracji or spis_uchwytow; if(spis_uchwytow)then if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then local UchwytObiektu=function(uchwyt_obiektu) if(uchwyty_bez_numeracji)then return uchwyt_obiektu[1]; end; return uchwyt_obiektu; end; for _, dany_artykul in ipairs(spis_uchwytow)do if(UchwytObiektu(dany_artykul[1])==uchwyt_obiektu)then if(not uchwyty_bez_numeracji)then if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(not dany_artykul[2])then return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_stron)..")"; end; return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..dany_artykul[2],frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_stron)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,dany_artykul[2],frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,dany_artykul[2],frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,dany_artykul[2],frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="tekst")then local tekst=dany_artykul[2]; if(tekst)then local tekst=pf:preprocess(tekst); return tekst; end; return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else if(dany_artykul[2])then local tytul_szablonu=frame.args["nazwa szablonu"] or szablonowe_modul.NazwaSzablonu(frame:getParent():getTitle()); local tab_naglowek=stronicowyparser_obiekty_modul.linki_szablony_wprowadzenia_tekstu[nazwa_obiektu]; local adres=dany_artykul[2][2]; local czy_w_tym_szablony=mw.ustring.match(adres,"{{[^{}]+}}"); if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); adres=specjalne_modul["PrzetwórzNagłówek"](adres,true); end; local adres=dany_artykul[2][1].."#"..adres; if(tytul_szablonu==tab_naglowek[1])then local naglowek=dany_artykul[2][3]; if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false); end; return link(adres,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],naglowek,frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_stron); elseif(tytul_szablonu==tab_naglowek[2])then return link(adres,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"tutaj",frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_stron); end; end; end; end; end; end; end; end; if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..html_modul.EncodeId(uchwyt_obiektu,true),frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_stron)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,nil,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,nil,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],nil,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,nil,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; end; return p; 8ckvwakiiqm56xmnz5yny3yz2gy4zly 552800 552799 2026-08-22T07:54:39Z Persino 2851 552800 Scribunto text/plain local p={}; function p.NumerObiektu(frame, nazwa_obiektu) local pf=frame:getParent(); local parametry_modul=require("Module:Parametry"); local uchwyt_obiektu=frame.args["uchwyt"]; local bez_automatu=parametry_modul.CzyTak(frame.args["bez automatu"]); local html_modul=require("Module:Html"); uchwyt_obiektu=uchwyt_obiektu and html_modul.DecodeHtml(uchwyt_obiektu,true) or nil; local nazwa_strony; local html_modul=require("Module:Html"); local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local techniczne_modul=require("Module:Techniczne"); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu; nazwa_artykulu=frame.args["nazwa artykułu"]; nazwa_ksiazki=frame.args["nazwa książki"]; local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych; local czy_table_tablica_transportu=parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki); local czy_aktualna_strona=nil; local nazwa_przestrzeni_nazw=pf.args["nazwa przestrzeni nazw"]; local nazwa_jednostki=pf.args["nazwa jednostki"]; if((nazwa_przestrzeni_nazw) or (nazwa_jednostki))then if(((not nazwa_artykulu)and(not nazwa_ksiazki)) or((nazwa_artykulu)and(not nazwa_ksiazki)))then if(nazwa_przestrzeni_nazw)then nazwa_przestrzeni_nazw=html_modul.DecodeHtml(nazwa_przestrzeni_nazw,true); end; if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local ksiazkowe_modul=require("Module:Książkowe"); local tabela_nazw_poczatkowe={}; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_poczatkowe); local nazwa_jednostki=nazwa_jednostki or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_poczatkowe); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={};local tabela_nazw_aktualna={}; strona=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); local aktualna_strona=ksiazkowe_modul["PełnaNazwaArtykułu"](nil,tabela_nazw_aktualna); if(strona~=aktualna_strona)then nazwa_artykulu=nazwa_artykulu or nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki_aktualna=ksiazkowe_modul["PełnaNazwaKsiążki"](nil,tabela_nazw_aktualna); local nazwa_ksiazki_strony=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(nazwa_ksiazki_aktualna~=nazwa_ksiazki_strony)then nazwa_ksiazki=nazwa_ksiazki or nazwa_ksiazki_strony; end; end; end; end; if((not nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=1; nazwa_strony=""; elseif((nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=2; nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; end; end; else local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu); nazwa_ksiazki=html_modul.DecodeHtml(nazwa_ksiazki,true); nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_ksiazki,[2]=nazwa_modulu,}; local ksiazkawe_modul=require("Module:Książkowe"); local tabela_nazw={}; nazwa_ksiazki=ksiazkawe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); if((nazwa_artykulu)and(nazwa_artykulu~=""))then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; else nazwa_artykulu=""; end; nazwa_strony=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; nazwa_strony=strona; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; else czy_aktualna_strona=2; nazwa_strony=strona; end; end; end; local link = function(adres_linku,przedrostek,przyrostek,skrot,lacznik,nazwa_linku,klasa,styl,link_wikidane,prefiks_numeru_woluminowego_strony) local czy_klasa=parametry_modul.CzyTak(klasa); local czy_styl=parametry_modul.CzyTak(styl); local spanramka_dziecko=mw.html.create('span'); if(czy_klasa)then spanramka_dziecko:attr("class",klasa);end; if(czy_styl)then spanramka_dziecko:attr('style',styl);end; local czy_skrot=parametry_modul.CzyTak(skrot); nazwa_linku=(przedrostek or "") ..(czy_skrot and (skrot..lacznik) or ((przedrostek and skrot and lacznik) and (function() if(prefiks_numeru_woluminowego_strony)then local podstrona=prefiks_numeru_woluminowego_strony[1]; local pozawoluminowe_strony=prefiks_numeru_woluminowego_strony[2]; local czy_artykul_korzystany=prefiks_numeru_woluminowego_strony[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return podstrona..lacznik; end; end; end; return ""; end)() or "") )..nazwa_linku..(przyrostek and (function() if(prefiks_numeru_woluminowego_strony)then local podstrona=prefiks_numeru_woluminowego_strony[1]; local pozawoluminowe_strony=prefiks_numeru_woluminowego_strony[2]; local czy_artykul_korzystany=prefiks_numeru_woluminowego_strony[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return "&nbsp;".."("..(przyrostek or "")..(czy_skrot and skrot or podstrona)..")"; end; end; end; end)() or ""); spanramka_dziecko:wikitext(nazwa_linku); local kod_html=tostring(spanramka_dziecko:allDone()); ---- local spanramka=mw.html.create('span'); if((link_wikidane)and(link_wikidane[1]))then spanramka:addClass("link"); spanramka:addClass(link_wikidane[1]); end; ---- local linki_modul=require("Module:Linki"); linki_modul.LinkOgromne(spanramka,nazwa_linku); ---- local link="[["..adres_linku.."|"..kod_html.."]]"; spanramka:wikitext(link); local kod_html=spanramka:allDone(); return tostring(kod_html); end; local wzor = function(uchwyt,numeracja,styl_main,styl_odstepu,pole_odstepu,styl_wzoru,klasa_wzoru,wzor,opis,opis2,klasa_opisu,styl_opisu,styl_opisu_2,wzor_opisu,wzor_opisu_2,styl_alternatywy_opisu,styl_alternatywy_opisu_2,pozycja_numeracji,klasa_numeracji,styl_numeracji,bez_automatu) local divramka=mw.html.create('div'); local parametry_modul=require("Module:Parametry"); local czy_pozycja_numeracji_prawa=parametry_modul.CzyTak(pozycja_numeracji); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',"wzór_"..html_modul.EncodeId(uchwyt,true)); else if(numeracja)then divramka:attr('id',"wzór_"..numeracja); else divramka:attr('id',"niedopasowany-wzór_"..html_modul.EncodeId(uchwyt,true)); end; end; end; if(parametry_modul.CzyTak(styl_main))then divramka:attr('style',styl_main); end; local uchwyt_fun=function() if(parametry_modul.CzyTak(uchwyt))then local divuchwytramka=mw.html.create('div'); divuchwytramka:attr('class',klasa_numeracji); divuchwytramka:attr('style',styl_numeracji); if(parametry_modul.CzyTak(bez_automatu))then divuchwytramka:wikitext('(',uchwyt..")"); else if(numeracja)then divuchwytramka:wikitext('('..numeracja..")"); else divuchwytramka:wikitext("(Niedopasowany uchwyt: "..uchwyt..")"); end; end; divramka:node(divuchwytramka); end; end; local pole_odstepu_fun=function() divramka:addClass("wzory"); local divramka2=mw.html.create('div'); divramka2:attr('style',styl_odstepu); divramka2:wikitext(pole_odstepu); divramka:node(divramka2); end; local opis_fun=function(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu) if(parametry_modul.CzyTak(opis))then local divramka5=mw.html.create('div') divramka5:attr('class',klasa_opisu) divramka5:attr('style',styl_opisu) divramka5:wikitext(wzor_opisu) divramka:node(divramka5) else local divramka5=mw.html.create('div'); divramka5:attr('style',styl_alternatywy_opisu); divramka:node(divramka5) end; end; if(not czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; opis_fun(opis2,styl_opisu_2,wzor_opisu_2,styl_alternatywy_opisu_2); local divramka4=mw.html.create('div'); divramka4:attr('class',klasa_wzoru); divramka4:attr('style',styl_wzoru); divramka4:wikitext(wzor); divramka:node(divramka4); opis_fun(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu); if(czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; return tostring(divramka:allDone()); end; local rysunek=function(uchwyt,numeracja,opis, rysunek, pozycja,rozmiar,klasa,styl,bez_automatu) local czy_uchwyt=parametry_modul.CzyTak(uchwyt); local id; if(czy_uchwyt)then if(numeracja)then if(parametry_modul.CzyTak(bez_automatu))then id="rysunek_"..html_modul.EncodeId(uchwyt,true); else id="rysunek_"..numeracja; end; else id="niedopasowany-rysunek_"..html_modul.EncodeHtml(uchwyt,true); end; end; local czy_opis=parametry_modul.CzyTak(opis); local plik_modul=require("Module:Plik"); local wywolanie_rysunku=plik_modul.Plik{ plik=((rysunek)and rysunek or "Przykładowy rysunek.svg"), id=id, styl=styl, klasa=klasa, ramka="mały", pozycja=pozycja or "prawo", rozmiar=(rozmiar or "200px"), opis=((czy_uchwyt or czy_opis)and (((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or ""), }; --local wywolanie_rysunku="[[File:"..((rysunek)and rysunek or "Przykładowy rysunek.svg").."|thumb|"..(pozycja or "right").."|"..(rozmiar or "200px")..((czy_uchwyt or czy_opis)and ("|"..((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or "").."]]"; return tostring(wywolanie_rysunku); end; local wypowiedzenie = function(uchwyt,przedrostek,numeracja,klasa,styl,przedrostek2,rodzaj,kogo,czego,jakie,styl_naglowka,styl_tekstu,tekst,bez_automatu) local divramka=mw.html.create('div'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',przedrostek.."_"..html_modul.EncodeId(uchwyt,true)); else divramka:attr('id',((not numeracja)and "niedopasowany-" or "")..przedrostek.."_"..(numeracja or html_modul.EncodeId(uchwyt,true))); end; end; divramka:attr('class',klasa); divramka:attr('style',styl); local wikitext=""; if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then wikitext="("..przedrostek2.." "..uchwyt..")"; else if(numeracja)then wikitext="("..przedrostek2.." "..numeracja..")"; else wikitext="("..przedrostek2.." Niedopawany uchwyt: "..uchwyt..")"; end; end; end; if(parametry_modul.CzyTak(styl_naglowka))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_naglowka); spanramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); divramka:node(spanramka); else divramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); end; divramka:wikitext('<BR>'); if(parametry_modul.CzyTak(styl_tekstu))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_tekstu); spanramka:wikitext(tekst); divramka:node(spanramka); else divramka:wikitext(tekst); end; return tostring(divramka:allDone()); end; local punkty = function(uchwyt,numeracja,przedrostek_id,klasa,styl,prefiks,bez_automatu) local spanramka=mw.html.create('sup'); spanramka:attr('style',klasa); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then spanramka:attr('id',przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); else if(parametry_modul.CzyTak(numeracja))then spanramka:attr('id',przedrostek_id.."_"..numeracja); else spanramka:attr('id',"niedopasowany-"..przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); end; end; end; spanramka:attr('style',styl); local smallramka=mw.html.create('small'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then smallramka:wikitext('['..prefiks..": "..uchwyt..']'); else if(parametry_modul.CzyTak(numeracja))then smallramka:wikitext('['..prefiks..": "..numeracja..']'); else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: "..uchwyt..']'); end; end; else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: brak uchwytu]"); end; spanramka:node(smallramka); return tostring(spanramka:allDone()); end; local nazwa_strony_fun=function(nazwa_strony) if((nazwa_strony)and(nazwa_strony==""))then return "";end; if(czy_aktualna_strona)then if(czy_aktualna_strona==1)then return ""; elseif(czy_aktualna_strona==2)then if(tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return "";end; end; else if((tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and (tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return ""; end; end; return html_modul.EncodeId(nazwa_strony); end; local function BladTablicyTransportu(czy_table_tablica_transportu) if(not czy_table_tablica_transportu)then local blad_modul=require("Module:Błąd"); return blad_modul.error{tekst="Błąd stronicowego parsera: '''Moduł:StronicowyParser'''. Tablica silnika transportu lub jego składowe przyjmują wartość nietabelkową.",tag="strong",}; end; return ""; end; local function BezNumeracjiZUchwytami() if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(uchwyt_obiektu)then local uchwyt_obiektu=html_modul.EncodeId(uchwyt_obiektu,true); return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"])..")"; else local uchwyt_obiektu=parametry_modul.CzyTak(uchwyt_obiektu) and html_modul.EncodeId(uchwyt_obiektu,true) or nil; return "("..link(nazwa_strony.."#"..frame.args["id"].."_".."Nieznany uchwyt",frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..(uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"])..")"; end; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,uchwyt_obiektu,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,uchwyt_obiektu,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,uchwyt_obiektu,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return uchwyt_obiektu; end; else return uchwyt_obiektu; end; end; if((not czy_table_tablica_transportu)or(parametry_modul.CzyTak(frame.args["bez automatu"])))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(czy_table_tablica_transportu); end; local link_wikidane;local prefiks_numeru_woluminowego_strony; local tabela_listy_uchwytow_i_numeracji_na_stronie; if(czy_aktualna_strona==nil)then local dane_analizy_artykulu=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(dane_analizy_artykulu)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni=dane_analizy_artykulu[nazwa_przestrzeni]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; prefiks_numeru_woluminowego_strony=tabela_listy_analizy_na_stronie.prefiks_numeru_woluminowego_strony; end; end; end; end; end; end; elseif(czy_aktualna_strona==1)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu; link_wikidane=tabela_listy_danych_analizy_ksiazki.link_wikidane; prefiks_numeru_woluminowego_strony=tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_na_stronie))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; elseif(czy_aktualna_strona==2)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; prefiks_numeru_woluminowego_strony=tabela_listy_analizy_na_stronie.prefiks_numeru_woluminowego_strony; end; end; end; end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); if(tabela_listy_uchwytow_i_numeracji_na_stronie)then local spis_uchwytow=tabela_listy_uchwytow_i_numeracji_na_stronie[nazwa_obiektu]; local uchwyty_bez_numeracji=spis_uchwytow.uchwyty_bez_numeracji; spis_uchwytow=uchwyty_bez_numeracji or spis_uchwytow; if(spis_uchwytow)then if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then local UchwytObiektu=function(uchwyt_obiektu) if(uchwyty_bez_numeracji)then return uchwyt_obiektu[1]; end; return uchwyt_obiektu; end; for _, dany_artykul in ipairs(spis_uchwytow)do if(UchwytObiektu(dany_artykul[1])==uchwyt_obiektu)then if(not uchwyty_bez_numeracji)then if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(not dany_artykul[2])then return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony)..")"; end; return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..dany_artykul[2],frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,dany_artykul[2],frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,dany_artykul[2],frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,dany_artykul[2],frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="tekst")then local tekst=dany_artykul[2]; if(tekst)then local tekst=pf:preprocess(tekst); return tekst; end; return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else if(dany_artykul[2])then local tytul_szablonu=frame.args["nazwa szablonu"] or szablonowe_modul.NazwaSzablonu(frame:getParent():getTitle()); local tab_naglowek=stronicowyparser_obiekty_modul.linki_szablony_wprowadzenia_tekstu[nazwa_obiektu]; local adres=dany_artykul[2][2]; local czy_w_tym_szablony=mw.ustring.match(adres,"{{[^{}]+}}"); if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); adres=specjalne_modul["PrzetwórzNagłówek"](adres,true); end; local adres=dany_artykul[2][1].."#"..adres; if(tytul_szablonu==tab_naglowek[1])then local naglowek=dany_artykul[2][3]; if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false); end; return link(adres,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],naglowek,frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony); elseif(tytul_szablonu==tab_naglowek[2])then return link(adres,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"tutaj",frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony); end; end; end; end; end; end; end; end; if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..html_modul.EncodeId(uchwyt_obiektu,true),frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,nil,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,nil,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],nil,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,nil,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; end; return p; 3e1e62iji3fve0kv99cb9huvky8domp 552809 552800 2026-08-22T09:14:41Z Persino 2851 552809 Scribunto text/plain local p={}; function p.NumerObiektu(frame, nazwa_obiektu) local pf=frame:getParent(); local parametry_modul=require("Module:Parametry"); local uchwyt_obiektu=frame.args["uchwyt"]; local bez_automatu=parametry_modul.CzyTak(frame.args["bez automatu"]); local html_modul=require("Module:Html"); uchwyt_obiektu=uchwyt_obiektu and html_modul.DecodeHtml(uchwyt_obiektu,true) or nil; local nazwa_strony; local html_modul=require("Module:Html"); local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local techniczne_modul=require("Module:Techniczne"); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu; nazwa_artykulu=frame.args["nazwa artykułu"]; nazwa_ksiazki=frame.args["nazwa książki"]; local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych; local czy_table_tablica_transportu=parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki); local czy_aktualna_strona=nil; local nazwa_przestrzeni_nazw=pf.args["nazwa przestrzeni nazw"]; local nazwa_jednostki=pf.args["nazwa jednostki"]; if((nazwa_przestrzeni_nazw) or (nazwa_jednostki))then if(((not nazwa_artykulu)and(not nazwa_ksiazki)) or((nazwa_artykulu)and(not nazwa_ksiazki)))then if(nazwa_przestrzeni_nazw)then nazwa_przestrzeni_nazw=html_modul.DecodeHtml(nazwa_przestrzeni_nazw,true); end; if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local ksiazkowe_modul=require("Module:Książkowe"); local tabela_nazw_poczatkowe={}; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_poczatkowe); local nazwa_jednostki=nazwa_jednostki or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_poczatkowe); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={};local tabela_nazw_aktualna={}; strona=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); local aktualna_strona=ksiazkowe_modul["PełnaNazwaArtykułu"](nil,tabela_nazw_aktualna); if(strona~=aktualna_strona)then nazwa_artykulu=nazwa_artykulu or nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki_aktualna=ksiazkowe_modul["PełnaNazwaKsiążki"](nil,tabela_nazw_aktualna); local nazwa_ksiazki_strony=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(nazwa_ksiazki_aktualna~=nazwa_ksiazki_strony)then nazwa_ksiazki=nazwa_ksiazki or nazwa_ksiazki_strony; end; end; end; end; if((not nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=1; nazwa_strony=""; elseif((nazwa_artykulu)and(not nazwa_ksiazki))then czy_aktualna_strona=2; nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; end; end; else local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu); nazwa_ksiazki=html_modul.DecodeHtml(nazwa_ksiazki,true); nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_ksiazki,[2]=nazwa_modulu,}; local ksiazkawe_modul=require("Module:Książkowe"); local tabela_nazw={}; nazwa_ksiazki=ksiazkawe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](nazwa_ksiazki,tabela_nazw); if((nazwa_artykulu)and(nazwa_artykulu~=""))then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; else nazwa_artykulu=""; end; nazwa_strony=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_strony); if(strona)then strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if((nazwa_przestrzeni~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)or(nazwa_ksiazki~=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu))then czy_aktualna_strona=nil; nazwa_strony=strona; elseif(nazwa_artykulu==tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then czy_aktualna_strona=1; nazwa_strony=""; else czy_aktualna_strona=2; nazwa_strony=strona; end; end; end; local link = function(adres_linku,przedrostek,przyrostek,skrot,lacznik,nazwa_linku,klasa,styl,link_wikidane,prefiks_numeru_woluminowego_strony) local czy_klasa=parametry_modul.CzyTak(klasa); local czy_styl=parametry_modul.CzyTak(styl); local spanramka_dziecko=mw.html.create('span'); if(czy_klasa)then spanramka_dziecko:attr("class",klasa);end; if(czy_styl)then spanramka_dziecko:attr('style',styl);end; local czy_skrot=parametry_modul.CzyTak(skrot); local nazwa_linku=(przedrostek or "") ..(czy_skrot and (skrot..lacznik) or ((przedrostek and skrot and lacznik) and (function() if(prefiks_numeru_woluminowego_strony)then local podstrona=prefiks_numeru_woluminowego_strony[1]; local pozawoluminowe_strony=prefiks_numeru_woluminowego_strony[2]; local czy_artykul_korzystany=prefiks_numeru_woluminowego_strony[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return podstrona..lacznik; end; end; end; return ""; end)() or "") )..nazwa_linku; local nazwa_linku_tyt=(przyrostek and (function() if(prefiks_numeru_woluminowego_strony)then local podstrona=prefiks_numeru_woluminowego_strony[1]; local pozawoluminowe_strony=prefiks_numeru_woluminowego_strony[2]; local czy_artykul_korzystany=prefiks_numeru_woluminowego_strony[3]; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then return (przyrostek or "")..(czy_skrot and skrot or podstrona); end; end; end; end)()); spanramka_dziecko:wikitext(nazwa_linku); local kod_html=tostring(spanramka_dziecko:allDone()); ---- local spanramka=mw.html.create('span');if((link_wikidane)and(link_wikidane[1]))then spanramka:addClass("link");spanramka:addClass(link_wikidane[1]);end; local spanramka2; if(nazwa_linku_tyt)then spanramka2=mw.html.create('span');if((link_wikidane)and(link_wikidane[1]))then spanramka2:addClass("link");spanramka2:addClass(link_wikidane[1]);end; end; ---- local linki_modul=require("Module:Linki"); linki_modul.LinkOgromne(spanramka,nazwa_linku); ---- local link="[["..adres_linku.."|"..kod_html.."]]";spanramka:wikitext(link); if(nazwa_linku_tyt)then local link2="([["..adres_linku.."|"..nazwa_linku_tyt.."]])";spanramka2:wikitext(link2);end; return tostring(spanramka:allDone())..(nazwa_linku_tyt and ("&nbsp;"..tostring(spanramka2:allDone())) or ""); end; local wzor = function(uchwyt,numeracja,styl_main,styl_odstepu,pole_odstepu,styl_wzoru,klasa_wzoru,wzor,opis,opis2,klasa_opisu,styl_opisu,styl_opisu_2,wzor_opisu,wzor_opisu_2,styl_alternatywy_opisu,styl_alternatywy_opisu_2,pozycja_numeracji,klasa_numeracji,styl_numeracji,bez_automatu) local divramka=mw.html.create('div'); local parametry_modul=require("Module:Parametry"); local czy_pozycja_numeracji_prawa=parametry_modul.CzyTak(pozycja_numeracji); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',"wzór_"..html_modul.EncodeId(uchwyt,true)); else if(numeracja)then divramka:attr('id',"wzór_"..numeracja); else divramka:attr('id',"niedopasowany-wzór_"..html_modul.EncodeId(uchwyt,true)); end; end; end; if(parametry_modul.CzyTak(styl_main))then divramka:attr('style',styl_main); end; local uchwyt_fun=function() if(parametry_modul.CzyTak(uchwyt))then local divuchwytramka=mw.html.create('div'); divuchwytramka:attr('class',klasa_numeracji); divuchwytramka:attr('style',styl_numeracji); if(parametry_modul.CzyTak(bez_automatu))then divuchwytramka:wikitext('(',uchwyt..")"); else if(numeracja)then divuchwytramka:wikitext('('..numeracja..")"); else divuchwytramka:wikitext("(Niedopasowany uchwyt: "..uchwyt..")"); end; end; divramka:node(divuchwytramka); end; end; local pole_odstepu_fun=function() divramka:addClass("wzory"); local divramka2=mw.html.create('div'); divramka2:attr('style',styl_odstepu); divramka2:wikitext(pole_odstepu); divramka:node(divramka2); end; local opis_fun=function(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu) if(parametry_modul.CzyTak(opis))then local divramka5=mw.html.create('div') divramka5:attr('class',klasa_opisu) divramka5:attr('style',styl_opisu) divramka5:wikitext(wzor_opisu) divramka:node(divramka5) else local divramka5=mw.html.create('div'); divramka5:attr('style',styl_alternatywy_opisu); divramka:node(divramka5) end; end; if(not czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; opis_fun(opis2,styl_opisu_2,wzor_opisu_2,styl_alternatywy_opisu_2); local divramka4=mw.html.create('div'); divramka4:attr('class',klasa_wzoru); divramka4:attr('style',styl_wzoru); divramka4:wikitext(wzor); divramka:node(divramka4); opis_fun(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu); if(czy_pozycja_numeracji_prawa)then uchwyt_fun(); else pole_odstepu_fun(); end; return tostring(divramka:allDone()); end; local rysunek=function(uchwyt,numeracja,opis, rysunek, pozycja,rozmiar,klasa,styl,bez_automatu) local czy_uchwyt=parametry_modul.CzyTak(uchwyt); local id; if(czy_uchwyt)then if(numeracja)then if(parametry_modul.CzyTak(bez_automatu))then id="rysunek_"..html_modul.EncodeId(uchwyt,true); else id="rysunek_"..numeracja; end; else id="niedopasowany-rysunek_"..html_modul.EncodeHtml(uchwyt,true); end; end; local czy_opis=parametry_modul.CzyTak(opis); local plik_modul=require("Module:Plik"); local wywolanie_rysunku=plik_modul.Plik{ plik=((rysunek)and rysunek or "Przykładowy rysunek.svg"), id=id, styl=styl, klasa=klasa, ramka="mały", pozycja=pozycja or "prawo", rozmiar=(rozmiar or "200px"), opis=((czy_uchwyt or czy_opis)and (((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or ""), }; --local wywolanie_rysunku="[[File:"..((rysunek)and rysunek or "Przykładowy rysunek.svg").."|thumb|"..(pozycja or "right").."|"..(rozmiar or "200px")..((czy_uchwyt or czy_opis)and ("|"..((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or "").."]]"; return tostring(wywolanie_rysunku); end; local wypowiedzenie = function(uchwyt,przedrostek,numeracja,klasa,styl,przedrostek2,rodzaj,kogo,czego,jakie,styl_naglowka,styl_tekstu,tekst,bez_automatu) local divramka=mw.html.create('div'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then divramka:attr('id',przedrostek.."_"..html_modul.EncodeId(uchwyt,true)); else divramka:attr('id',((not numeracja)and "niedopasowany-" or "")..przedrostek.."_"..(numeracja or html_modul.EncodeId(uchwyt,true))); end; end; divramka:attr('class',klasa); divramka:attr('style',styl); local wikitext=""; if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then wikitext="("..przedrostek2.." "..uchwyt..")"; else if(numeracja)then wikitext="("..przedrostek2.." "..numeracja..")"; else wikitext="("..przedrostek2.." Niedopawany uchwyt: "..uchwyt..")"; end; end; end; if(parametry_modul.CzyTak(styl_naglowka))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_naglowka); spanramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); divramka:node(spanramka); else divramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext); end; divramka:wikitext('<BR>'); if(parametry_modul.CzyTak(styl_tekstu))then local spanramka=mw.html.create('span'); spanramka:attr('style',styl_tekstu); spanramka:wikitext(tekst); divramka:node(spanramka); else divramka:wikitext(tekst); end; return tostring(divramka:allDone()); end; local punkty = function(uchwyt,numeracja,przedrostek_id,klasa,styl,prefiks,bez_automatu) local spanramka=mw.html.create('sup'); spanramka:attr('style',klasa); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then spanramka:attr('id',przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); else if(parametry_modul.CzyTak(numeracja))then spanramka:attr('id',przedrostek_id.."_"..numeracja); else spanramka:attr('id',"niedopasowany-"..przedrostek_id.."_"..html_modul.EncodeId(uchwyt,true)); end; end; end; spanramka:attr('style',styl); local smallramka=mw.html.create('small'); if(parametry_modul.CzyTak(uchwyt))then if(parametry_modul.CzyTak(bez_automatu))then smallramka:wikitext('['..prefiks..": "..uchwyt..']'); else if(parametry_modul.CzyTak(numeracja))then smallramka:wikitext('['..prefiks..": "..numeracja..']'); else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: "..uchwyt..']'); end; end; else smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: brak uchwytu]"); end; spanramka:node(smallramka); return tostring(spanramka:allDone()); end; local nazwa_strony_fun=function(nazwa_strony) if((nazwa_strony)and(nazwa_strony==""))then return "";end; if(czy_aktualna_strona)then if(czy_aktualna_strona==1)then return ""; elseif(czy_aktualna_strona==2)then if(tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return "";end; end; else if((tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and (tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then return ""; end; end; return html_modul.EncodeId(nazwa_strony); end; local function BladTablicyTransportu(czy_table_tablica_transportu) if(not czy_table_tablica_transportu)then local blad_modul=require("Module:Błąd"); return blad_modul.error{tekst="Błąd stronicowego parsera: '''Moduł:StronicowyParser'''. Tablica silnika transportu lub jego składowe przyjmują wartość nietabelkową.",tag="strong",}; end; return ""; end; local function BezNumeracjiZUchwytami() if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(uchwyt_obiektu)then local uchwyt_obiektu=html_modul.EncodeId(uchwyt_obiektu,true); return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"])..")"; else local uchwyt_obiektu=parametry_modul.CzyTak(uchwyt_obiektu) and html_modul.EncodeId(uchwyt_obiektu,true) or nil; return "("..link(nazwa_strony.."#"..frame.args["id"].."_".."Nieznany uchwyt",frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..(uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"])..")"; end; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,uchwyt_obiektu,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,uchwyt_obiektu,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,uchwyt_obiektu,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return uchwyt_obiektu; end; else return uchwyt_obiektu; end; end; if((not czy_table_tablica_transportu)or(parametry_modul.CzyTak(frame.args["bez automatu"])))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(czy_table_tablica_transportu); end; local link_wikidane;local prefiks_numeru_woluminowego_strony; local tabela_listy_uchwytow_i_numeracji_na_stronie; if(czy_aktualna_strona==nil)then local dane_analizy_artykulu=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(dane_analizy_artykulu)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni=dane_analizy_artykulu[nazwa_przestrzeni]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; prefiks_numeru_woluminowego_strony=tabela_listy_analizy_na_stronie.prefiks_numeru_woluminowego_strony; end; end; end; end; end; end; elseif(czy_aktualna_strona==1)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu; link_wikidane=tabela_listy_danych_analizy_ksiazki.link_wikidane; prefiks_numeru_woluminowego_strony=tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_na_stronie))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; elseif(czy_aktualna_strona==2)then local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki; if(not parametry_modul.TypeTable(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce))then return BezNumeracjiZUchwytami()..BladTablicyTransportu(false); end; if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_podstron_woluminu; if(lista_artykolow)then local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu] if(tabela_listy_analizy_na_stronie)then tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje; link_wikidane=tabela_listy_analizy_na_stronie.link_wikidane; prefiks_numeru_woluminowego_strony=tabela_listy_analizy_na_stronie.prefiks_numeru_woluminowego_strony; end; end; end; end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); if(tabela_listy_uchwytow_i_numeracji_na_stronie)then local spis_uchwytow=tabela_listy_uchwytow_i_numeracji_na_stronie[nazwa_obiektu]; local uchwyty_bez_numeracji=spis_uchwytow.uchwyty_bez_numeracji; spis_uchwytow=uchwyty_bez_numeracji or spis_uchwytow; if(spis_uchwytow)then if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then local UchwytObiektu=function(uchwyt_obiektu) if(uchwyty_bez_numeracji)then return uchwyt_obiektu[1]; end; return uchwyt_obiektu; end; for _, dany_artykul in ipairs(spis_uchwytow)do if(UchwytObiektu(dany_artykul[1])==uchwyt_obiektu)then if(not uchwyty_bez_numeracji)then if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); if(not dany_artykul[2])then return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony)..")"; end; return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..dany_artykul[2],frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,dany_artykul[2],frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,dany_artykul[2],frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,dany_artykul[2],frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="tekst")then local tekst=dany_artykul[2]; if(tekst)then local tekst=pf:preprocess(tekst); return tekst; end; return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu")); end; else if(dany_artykul[2])then local tytul_szablonu=frame.args["nazwa szablonu"] or szablonowe_modul.NazwaSzablonu(frame:getParent():getTitle()); local tab_naglowek=stronicowyparser_obiekty_modul.linki_szablony_wprowadzenia_tekstu[nazwa_obiektu]; local adres=dany_artykul[2][2]; local czy_w_tym_szablony=mw.ustring.match(adres,"{{[^{}]+}}"); if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); adres=specjalne_modul["PrzetwórzNagłówek"](adres,true); end; local adres=dany_artykul[2][1].."#"..adres; if(tytul_szablonu==tab_naglowek[1])then local naglowek=dany_artykul[2][3]; if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false); end; return link(adres,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],naglowek,frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony); elseif(tytul_szablonu==tab_naglowek[2])then return link(adres,frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"tutaj",frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony); end; end; end; end; end; end; end; end; if(frame.args["obiekt"])then if(frame.args["obiekt"]=="link")then local nazwa_strony=nazwa_strony_fun(nazwa_strony); return "("..link(nazwa_strony.."#niedopasowany-"..frame.args["id"].."_"..html_modul.EncodeId(uchwyt_obiektu,true),frame.args["przedrostek"],frame.args["przyrostek"],frame.args["skrót"],frame.args["łącznik"],"Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"],link_wikidane,prefiks_numeru_woluminowego_strony)..")"; elseif(frame.args["obiekt"]=="wzór")then return wzor(uchwyt_obiektu,nil,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="rysunek")then return rysunek(uchwyt_obiektu,nil,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="wypowiedzenie")then return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],nil,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]); elseif(frame.args["obiekt"]=="punkt")then return punkty(uchwyt_obiektu,nil,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]); else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; else return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"); end; end; return p; 179rntoot8nz4qoqvbr5a8ezlj323xp Moduł:StronicowyParser/AnalizaSpisuRzeczy 828 60192 552704 552665 2026-08-21T13:17:10Z Persino 2851 552704 Scribunto text/plain local p={}; function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end; local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od); if((a)and(b)and(a>b))then return;end; if((not liczba_do)or(b<=liczba_do))then return a,b,c,d,e,f,g,h,i,j,k; end; return nil; else if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end; local liczba_start=liczba_do or 1; local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba_od)))then return a,b,c,d,e,f,g,h,i,j,k; elseif((b1)and(b1==liczba_od))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; end; a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9; local dlugosc_tekstu_wyszukiwanego=#tekst; if(not czy_od_tylu)then if((not liczba_od)or(liczba_od==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; end; end; end; else if(liczba_od==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then tak=true; break; elseif(czy_okladka)then tak=true; break; end; end; end; return (not tak); end; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true); if(czy_zerowy_spis_rzeczy)then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2) local liczba_start;local liczba_koniec; local liczba_wys=liczba_od; local spis_naglowka; local spis_naglowka_stare; local spis_naglowka_poziom; while(true)do local __liczba_start,__liczba_koniec,wartosc_przechwycona; if(czy_rozdzial_rownaniowy_dodatni)then __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu) else __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu); end; if(__liczba_start)then if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end; local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona); local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka) if(czy_spis_tresci)then spis_naglowka_stare=naglowek; spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; if(czy_spis_tresci(spis_naglowka))then liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; else spis_naglowka=naglowek; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; return true; end); if(not wynik)then break; end; else break; end; end; if(liczba_start)then return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom; end; end; local obiekt="SZABLON"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(naglowek,nil); end; end; else local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu]; if(naglowek)then local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if((naglowek)and(poziom_naglowka))then return __FUNKCJA(naglowek,poziom_naglowka); end; end; end; end; return true; end); return wynik; end); local obiekt="ZNACZNIK"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="center")then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(zawartosc,nil); end; end; elseif(znaczniki_wprowadzenia_tekstu[nazwa])then if(zawartosc)then local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); if(numer_rozdzialu)then return __FUNKCJA(zawartosc,numer_rozdzialu); end; end; end; return true; end); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*"; local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( wzor_rozdzialu_dodatniego, true, function(naglowek) return naglowek,naglowek; end, function(naglowek,_,__FUNKCJA) local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then return __FUNKCJA(naglowek,poziom_naglowka); end; return true; end); if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom) local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka; if((not czy_spis_tresci)and(spis_naglowka))then spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; end; return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,nil); elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,nil); elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom); end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; local zawartosc; if(not czy_numer_parametru_naglowka)then czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(not czy_numer_parametru_naglowka)then return nil;end; local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc_szablonu)then return nil;end; zawartosc_szablonu=mw.text.trim(zawartosc_szablonu); local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu); if((not naglowek)or(not poziom_naglowka))then return nil;end; zawartosc=naglowek; else zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc)then return nil;end; end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; local szablonowe_modul=require("Module:Szablonowe"); while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")); if(czy_pomiedzy_naglowkami and(((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) )--[[or( not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu()) )]]) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1; elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local czy_rozdzial_dwukropkowy; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_rozdzial)then liczba_start=liczba_start_rozdzial; else czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$"); liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; else liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; end; end; else return liczba_spisowa,false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return liczba_spisowa,false; end; end; else return liczba_spisowa,false; end; end; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))))); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_start_naglowek_przed)then if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; else liczba_start=liczba_spis_tresci; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; end; else liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; else liczba_start=liczba_start_sugerowane; end; end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil; if(liczba_start<=liczba_obiekt_start)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(not czy_element_spisu)then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; --if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---elseif((lista_szablon=="")and(przerwa_szablon==""))then ---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---end; if(czy_element_spisu)then break;end; end; end; end; end; if(czy_element_spisu)then local function IleKoniec() while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; --else -- liczba_koniec=#tekst_rozwiniety_calego_artykulu; -- return; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; break; end; end; end; IleKoniec(); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then --koniec_obiekt=koniec_szablon; local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(czy_element)then liczba_koniec=liczba_rozdzial_koniec; break; end; end; start=koniec_szablon; else break; end; end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); --mw.log(tekst,"TYTAN123") return tekst; end; return p; 1k31rusqi23h1nr687wbg6d1eqi4qvl 552722 552704 2026-08-21T15:35:53Z Persino 2851 552722 Scribunto text/plain local p={}; function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end; local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od); if((a)and(b)and(a>b))then return;end; if((not liczba_do)or(b<=liczba_do))then return a,b,c,d,e,f,g,h,i,j,k; end; return nil; else if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end; local liczba_start=liczba_do or 1; local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba_od)))then return a,b,c,d,e,f,g,h,i,j,k; elseif((b1)and(b1==liczba_od))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; end; a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9; local dlugosc_tekstu_wyszukiwanego=#tekst; if(not czy_od_tylu)then if((not liczba_od)or(liczba_od==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; end; end; end; else if(liczba_od==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then tak=true; break; elseif(czy_okladka)then tak=true; break; end; end; end; return (not tak); end; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true); if(czy_zerowy_spis_rzeczy)then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2) local liczba_start;local liczba_koniec; local liczba_wys=liczba_od; local spis_naglowka; local spis_naglowka_stare; local spis_naglowka_poziom; while(true)do local __liczba_start,__liczba_koniec,wartosc_przechwycona; if(czy_rozdzial_rownaniowy_dodatni)then __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu) else __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu); end; if(__liczba_start)then if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end; local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona); local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka) if(czy_spis_tresci)then spis_naglowka_stare=naglowek; spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; if(czy_spis_tresci(spis_naglowka))then liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; else spis_naglowka=naglowek; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; return true; end); if(not wynik)then break; end; else break; end; end; if(liczba_start)then return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom; end; end; local obiekt="SZABLON"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(naglowek,nil); end; end; else local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu]; if(naglowek)then local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if((naglowek)and(poziom_naglowka))then return __FUNKCJA(naglowek,poziom_naglowka); end; end; end; end; return true; end); return wynik; end); local obiekt="ZNACZNIK"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="center")then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(zawartosc,nil); end; end; elseif(znaczniki_wprowadzenia_tekstu[nazwa])then if(zawartosc)then local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); if(numer_rozdzialu)then return __FUNKCJA(zawartosc,numer_rozdzialu); end; end; end; return true; end); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*"; local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( wzor_rozdzialu_dodatniego, true, function(naglowek) return naglowek,naglowek; end, function(naglowek,_,__FUNKCJA) local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then return __FUNKCJA(naglowek,poziom_naglowka); end; return true; end); if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom) local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka; if((not czy_spis_tresci)and(spis_naglowka))then spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; end; return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom); elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom); elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; local zawartosc; if(not czy_numer_parametru_naglowka)then czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(not czy_numer_parametru_naglowka)then return nil;end; local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc_szablonu)then return nil;end; zawartosc_szablonu=mw.text.trim(zawartosc_szablonu); local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu); if((not naglowek)or(not poziom_naglowka))then return nil;end; zawartosc=naglowek; else zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc)then return nil;end; end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; local szablonowe_modul=require("Module:Szablonowe"); while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")); if(czy_pomiedzy_naglowkami and(((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) )--[[or( not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu()) )]]) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1; elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local czy_rozdzial_dwukropkowy; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_rozdzial)then liczba_start=liczba_start_rozdzial; else czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$"); liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; else liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; end; end; else return liczba_spisowa,false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return liczba_spisowa,false; end; end; else return liczba_spisowa,false; end; end; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))))); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_start_naglowek_przed)then if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; else liczba_start=liczba_spis_tresci; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; end; else liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; else liczba_start=liczba_start_sugerowane; end; end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil; if(liczba_start<=liczba_obiekt_start)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(not czy_element_spisu)then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; --if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---elseif((lista_szablon=="")and(przerwa_szablon==""))then ---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---end; if(czy_element_spisu)then break;end; end; end; end; end; if(czy_element_spisu)then local function IleKoniec() while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; --else -- liczba_koniec=#tekst_rozwiniety_calego_artykulu; -- return; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; break; end; end; end; IleKoniec(); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then --koniec_obiekt=koniec_szablon; local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(czy_element)then liczba_koniec=liczba_rozdzial_koniec; break; end; end; start=koniec_szablon; else break; end; end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); --mw.log(tekst,"TYTAN123") return tekst; end; return p; qm28gz7b75buwjyg2tz2jufrpqjueiz 552752 552722 2026-08-21T18:27:21Z Persino 2851 552752 Scribunto text/plain local p={}; function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end; local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od); if((a)and(b)and(a>b))then return;end; if((not liczba_do)or(b<=liczba_do))then return a,b,c,d,e,f,g,h,i,j,k; end; return nil; else if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end; local liczba_start=liczba_do or 1; local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba_od)))then return a,b,c,d,e,f,g,h,i,j,k; elseif((b1)and(b1==liczba_od))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; end; a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9; local dlugosc_tekstu_wyszukiwanego=#tekst; if(not czy_od_tylu)then if((not liczba_od)or(liczba_od==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; end; end; end; else if(liczba_od==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then tak=true; break; elseif(czy_okladka)then tak=true; break; end; end; end; return (not tak); end; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true); if(czy_zerowy_spis_rzeczy)then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2) local liczba_start;local liczba_koniec; local liczba_wys=liczba_od; local spis_naglowka; local spis_naglowka_stare; local spis_naglowka_poziom; while(true)do local __liczba_start,__liczba_koniec,wartosc_przechwycona; if(czy_rozdzial_rownaniowy_dodatni)then __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu) else __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu); end; if(__liczba_start)then if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end; local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona); local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka) if(czy_spis_tresci)then spis_naglowka_stare=naglowek; spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; if(czy_spis_tresci(spis_naglowka))then liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; else spis_naglowka=naglowek; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; return true; end); if(not wynik)then break; end; else break; end; end; if(liczba_start)then return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom; end; end; local obiekt="SZABLON"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(naglowek,nil); end; end; else local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu]; if(naglowek)then local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if((naglowek)and(poziom_naglowka))then return __FUNKCJA(naglowek,poziom_naglowka); end; end; end; end; return true; end); return wynik; end); local obiekt="ZNACZNIK"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="center")then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(zawartosc,nil); end; end; elseif(znaczniki_wprowadzenia_tekstu[nazwa])then if(zawartosc)then local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); if(numer_rozdzialu)then return __FUNKCJA(zawartosc,numer_rozdzialu); end; end; end; return true; end); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*"; local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( wzor_rozdzialu_dodatniego, true, function(naglowek) return naglowek,naglowek; end, function(naglowek,_,__FUNKCJA) local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then return __FUNKCJA(naglowek,poziom_naglowka); end; return true; end); if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom) local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka; if((not czy_spis_tresci)and(spis_naglowka))then spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; end; return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom); elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom); elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; local zawartosc; if(not czy_numer_parametru_naglowka)then czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(not czy_numer_parametru_naglowka)then return nil;end; local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc_szablonu)then return nil;end; zawartosc_szablonu=mw.text.trim(zawartosc_szablonu); local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu); if((not naglowek)or(not poziom_naglowka))then return nil;end; zawartosc=naglowek; else zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc)then return nil;end; end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; local szablonowe_modul=require("Module:Szablonowe"); while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")); if(czy_pomiedzy_naglowkami and(((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) )--[[or( not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu()) )]]) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1; elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local czy_rozdzial_dwukropkowy; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_rozdzial)then liczba_start=liczba_start_rozdzial; else czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$"); liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; else liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; end; end; else return liczba_spisowa,false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return liczba_spisowa,false; end; end; else return liczba_spisowa,false; end; end; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))))); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_start_naglowek_przed)then if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; else liczba_start=liczba_spis_tresci; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; end; else liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; else liczba_start=liczba_start_sugerowane; end; end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil; if(liczba_start<=liczba_obiekt_start)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(not czy_element_spisu)then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; --if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---elseif((lista_szablon=="")and(przerwa_szablon==""))then ---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---end; if(czy_element_spisu)then break;end; end; end; end; end; if(czy_element_spisu)then local function IleKoniec() while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; --else -- liczba_koniec=#tekst_rozwiniety_calego_artykulu; -- return; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; break; end; end; end; IleKoniec(); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then --koniec_obiekt=koniec_szablon; local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(czy_element)then liczba_koniec=liczba_rozdzial_koniec; break; end; end; start=koniec_szablon; else break; end; end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); --mw.log(tekst,"TYTAN123") return tekst; end; return p; nnbtk45htssv12du72z0oazc8ohsqse 552753 552752 2026-08-21T18:40:20Z Persino 2851 Anulowano wersję [[Special:Diff/552752|552752]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]]) 552753 Scribunto text/plain local p={}; function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end; local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od); if((a)and(b)and(a>b))then return;end; if((not liczba_do)or(b<=liczba_do))then return a,b,c,d,e,f,g,h,i,j,k; end; return nil; else if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end; local liczba_start=liczba_do or 1; local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba_od)))then return a,b,c,d,e,f,g,h,i,j,k; elseif((b1)and(b1==liczba_od))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; end; a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9; local dlugosc_tekstu_wyszukiwanego=#tekst; if(not czy_od_tylu)then if((not liczba_od)or(liczba_od==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; end; end; end; else if(liczba_od==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then tak=true; break; elseif(czy_okladka)then tak=true; break; end; end; end; return (not tak); end; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true); if(czy_zerowy_spis_rzeczy)then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2) local liczba_start;local liczba_koniec; local liczba_wys=liczba_od; local spis_naglowka; local spis_naglowka_stare; local spis_naglowka_poziom; while(true)do local __liczba_start,__liczba_koniec,wartosc_przechwycona; if(czy_rozdzial_rownaniowy_dodatni)then __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu) else __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu); end; if(__liczba_start)then if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end; local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona); local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka) if(czy_spis_tresci)then spis_naglowka_stare=naglowek; spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; if(czy_spis_tresci(spis_naglowka))then liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; else spis_naglowka=naglowek; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; return true; end); if(not wynik)then break; end; else break; end; end; if(liczba_start)then return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom; end; end; local obiekt="SZABLON"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(naglowek,nil); end; end; else local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu]; if(naglowek)then local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if((naglowek)and(poziom_naglowka))then return __FUNKCJA(naglowek,poziom_naglowka); end; end; end; end; return true; end); return wynik; end); local obiekt="ZNACZNIK"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="center")then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(zawartosc,nil); end; end; elseif(znaczniki_wprowadzenia_tekstu[nazwa])then if(zawartosc)then local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); if(numer_rozdzialu)then return __FUNKCJA(zawartosc,numer_rozdzialu); end; end; end; return true; end); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*"; local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( wzor_rozdzialu_dodatniego, true, function(naglowek) return naglowek,naglowek; end, function(naglowek,_,__FUNKCJA) local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then return __FUNKCJA(naglowek,poziom_naglowka); end; return true; end); if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom) local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka; if((not czy_spis_tresci)and(spis_naglowka))then spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; end; return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom); elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom); elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; local zawartosc; if(not czy_numer_parametru_naglowka)then czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(not czy_numer_parametru_naglowka)then return nil;end; local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc_szablonu)then return nil;end; zawartosc_szablonu=mw.text.trim(zawartosc_szablonu); local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu); if((not naglowek)or(not poziom_naglowka))then return nil;end; zawartosc=naglowek; else zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc)then return nil;end; end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; local szablonowe_modul=require("Module:Szablonowe"); while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")); if(czy_pomiedzy_naglowkami and(((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) )--[[or( not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu()) )]]) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1; elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local czy_rozdzial_dwukropkowy; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_rozdzial)then liczba_start=liczba_start_rozdzial; else czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$"); liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; else liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; end; end; else return liczba_spisowa,false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return liczba_spisowa,false; end; end; else return liczba_spisowa,false; end; end; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))))); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_start_naglowek_przed)then if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; else liczba_start=liczba_spis_tresci; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; end; else liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; else liczba_start=liczba_start_sugerowane; end; end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil; if(liczba_start<=liczba_obiekt_start)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(not czy_element_spisu)then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; --if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---elseif((lista_szablon=="")and(przerwa_szablon==""))then ---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---end; if(czy_element_spisu)then break;end; end; end; end; end; if(czy_element_spisu)then local function IleKoniec() while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; --else -- liczba_koniec=#tekst_rozwiniety_calego_artykulu; -- return; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; break; end; end; end; IleKoniec(); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then --koniec_obiekt=koniec_szablon; local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(czy_element)then liczba_koniec=liczba_rozdzial_koniec; break; end; end; start=koniec_szablon; else break; end; end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); --mw.log(tekst,"TYTAN123") return tekst; end; return p; qm28gz7b75buwjyg2tz2jufrpqjueiz Wikibooks:Moduły/StronicowyParser 4 63511 552717 551521 2026-08-21T14:47:12Z Persino 2851 /* Spis treści */ 552717 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje stronicowego parsera służące do analizu uchwytów i ich numerowania, do przydzielenia uchwytom, pewnych rozdziałów, czy nawet pobieranie, za pomocą uchwytów. Też służy do ładowania spisów treści przy pomocy jego funkcji. == Spis treści == * {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} - procedur stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych, uruchamiane w stronicowych szablonach, które są zawarte w podkategoriach: {{lk2|Szablony stronicowe}}, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy}} - funkcje do wydzielania z wikikodu strony rozdziału danego spisu jego głównej części, ktorym jest właściwy spis treści strony, tym spisem treści nie muszą być rozdziały i artykuły w rozdziale: '''Spis treści''', czy: '''SPIS RZECZY''', wraz z tym nim, te rozdziały spisu mogą być różnie znormowane, * {{lru|Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}} - zawiera funkcje do analizy spisów i całej strony z drugiej strony, jak i tworzenia tablicy nagłówków, z ich identyfikatorami '''id''', * {{lru|Moduły/StronicowyParser/Kategorie}} - zwraca kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}}, * {{lru|Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka lub artykułu książki, zależnie od ustawień, jego numeru, lub odwrotnie, * {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie, * {{lru|Moduły/StronicowyParser/NumerObiektu}} - funkcje numerowania uchwytów, przypisywanie uchwytom linków do nagłówków lub uchwytom zawartości tekstów, * {{lru|Moduły/StronicowyParser/NumeracjaObiektówStron}} - funkcja odpowiednio ustawia dane, jaka jest numeracja, jeśli w ogóle istnieje, danego typu obiektu, sprawdza, czy uchwyt obiektu się powtarza, przy numeracji uwzględniany jest numer artykułu. * {{lru|Moduły/StronicowyParser/Potrzebne}} - * {{lru|Moduły/StronicowyParser/Problemy}} - funkcje sprawdzania, czy jest taki, i dodawania, problemów do tablicy, * {{lru|Moduły/StronicowyParser/Rozdziały}} ('''spis treści''') - funkcje, do przygotowania tekstów spisów treści, do dalszej obróbki przez funkcje z: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, * {{lru|Moduły/StronicowyParser/SpisTreści}} ('''spis treści''') - spis treści dla jego podmodułów, * {{lru|Moduły/StronicowyParser/StronaSubst}} - strona, a w niej funkcje, do sprawdzania, czy dana podana strona jest stroną zbiorczą, ładuje kod strony zbiorczej dla szablonów {{s|StronaSubst}} i {{s|KsiążkaSubst}}, także przygotowuje wpisy do spisu treści {{s|Spis treści}} ({{s|Spis treści zwinięty}}), czy {{s|TOC}}, a nawet {{s|TOC limit}} * {{lru|Moduły/StronicowyParser/Tekst}} - są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny, * {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}} ('''spis treści''') - moduł do zbierania informacji o aktualnej stronie, nie spisie treści, co do uchwytów pewnych obiektów i dalszych informacji o nich, * {{lru|Moduły/StronicowyParser/SzablonyTekstu}} - funkcje aktualizowania informacji specjalne dla szablonów {{s|PobierzŚródtekst}} na podstawie informacji w szablonach {{s|Śródtekst}} w tym samym lub na innej stronie artykułu książki, czy na innej stronie nieartykularnej (książkowej), * {{lru|Moduły/StronicowyParser/informacje}} - moduł ładujący informacje o danej stronie, dołączony raz na całą nią, * {{lru|Moduły/StronicowyParser/obiekty}} - zestaw stałych tablicowych ładowanych raz na całą stronę. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> kflf6kv4kgh7bsihv69ja0r5pgvu7g6 552718 552717 2026-08-21T14:51:20Z Persino 2851 /* Spis treści */ 552718 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje stronicowego parsera służące do analizu uchwytów i ich numerowania, do przydzielenia uchwytom, pewnych rozdziałów, czy nawet pobieranie, za pomocą uchwytów. Też służy do ładowania spisów treści przy pomocy jego funkcji. == Spis treści == * {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} - procedur stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych, uruchamiane w stronicowych szablonach, które są zawarte w podkategoriach: {{lk2|Szablony stronicowe}}, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy}} {{Patrz|AnalizaSpisuRzeczy}} - funkcje do wydzielania z wikikodu strony rozdziału danego spisu jego głównej części, ktorym jest właściwy spis treści strony, tym spisem treści nie muszą być rozdziały i artykuły w rozdziale: '''Spis treści''', czy: '''SPIS RZECZY''', wraz z tym nim, te rozdziały spisu mogą być różnie znormowane, * {{lru|Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}} - zawiera funkcje do analizy spisów i całej strony z drugiej strony, jak i tworzenia tablicy nagłówków, z ich identyfikatorami '''id''', * {{lru|Moduły/StronicowyParser/Kategorie}} - zwraca kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}}, * {{lru|Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka lub artykułu książki, zależnie od ustawień, jego numeru, lub odwrotnie, * {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie, * {{lru|Moduły/StronicowyParser/NumerObiektu}} - funkcje numerowania uchwytów, przypisywanie uchwytom linków do nagłówków lub uchwytom zawartości tekstów, * {{lru|Moduły/StronicowyParser/NumeracjaObiektówStron}} - funkcja odpowiednio ustawia dane, jaka jest numeracja, jeśli w ogóle istnieje, danego typu obiektu, sprawdza, czy uchwyt obiektu się powtarza, przy numeracji uwzględniany jest numer artykułu. * {{lru|Moduły/StronicowyParser/Potrzebne}} - * {{lru|Moduły/StronicowyParser/Problemy}} - funkcje sprawdzania, czy jest taki, i dodawania, problemów do tablicy, * {{lru|Moduły/StronicowyParser/Rozdziały}} ('''spis treści''') - funkcje, do przygotowania tekstów spisów treści, do dalszej obróbki przez funkcje z: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, funkcje stąd korzystają z funkcji modułu: {{LinkPatrz|AnalizaSpisuRzeczy}}, do wydzielenia z całego spisu jego fragmentu, aby dało się go łatwo podzielić na nagłówki, z ich parametrami, i ich teksty rozdziałów, robione jest to poprzez funkcję główna z: {{LinkPatrz|ZbieranieDanychStron}}, * {{lru|Moduły/StronicowyParser/SpisTreści}} ('''spis treści''') - spis treści dla jego podmodułów, * {{lru|Moduły/StronicowyParser/StronaSubst}} - strona, a w niej funkcje, do sprawdzania, czy dana podana strona jest stroną zbiorczą, ładuje kod strony zbiorczej dla szablonów {{s|StronaSubst}} i {{s|KsiążkaSubst}}, także przygotowuje wpisy do spisu treści {{s|Spis treści}} ({{s|Spis treści zwinięty}}), czy {{s|TOC}}, a nawet {{s|TOC limit}} * {{lru|Moduły/StronicowyParser/Tekst}} - są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny, * {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}} {{Patrz|ZbieranieDanychStron}} ('''spis treści''') - moduł do zbierania informacji o aktualnej stronie, nie spisie treści, co do uchwytów pewnych obiektów i dalszych informacji o nich, * {{lru|Moduły/StronicowyParser/SzablonyTekstu}} - funkcje aktualizowania informacji specjalne dla szablonów {{s|PobierzŚródtekst}} na podstawie informacji w szablonach {{s|Śródtekst}} w tym samym lub na innej stronie artykułu książki, czy na innej stronie nieartykularnej (książkowej), * {{lru|Moduły/StronicowyParser/informacje}} - moduł ładujący informacje o danej stronie, dołączony raz na całą nią, * {{lru|Moduły/StronicowyParser/obiekty}} - zestaw stałych tablicowych ładowanych raz na całą stronę. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9iqy1vdonmdidhnp6fqzjnz0c864iu7 552802 552718 2026-08-22T08:02:34Z Persino 2851 552802 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje stronicowego parsera służące do analizu uchwytów i ich numerowania, do przydzielenia uchwytom, pewnych rozdziałów, czy nawet pobieranie, za pomocą uchwytów. Też służy do ładowania spisów treści przy pomocy jego funkcji. == Spis treści == * {{lr|Moduły/StronicowyParser/Moduł główny|StronicowyParser}} - procedur stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych, uruchamiane w stronicowych szablonach, które są zawarte w podkategoriach: {{lk2|Szablony stronicowe}}, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy}} {{Patrz|AnalizaSpisuRzeczy}} - funkcje do wydzielania z wikikodu strony rozdziału danego spisu jego głównej części, ktorym jest właściwy spis treści strony, tym spisem treści nie muszą być rozdziały i artykuły w rozdziale: '''Spis treści''', czy: '''SPIS RZECZY''', wraz z tym nim, te rozdziały spisu mogą być różnie znormowane, * {{lru|Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}} - zawiera funkcje do analizy spisów i całej strony z drugiej strony, jak i tworzenia tablicy nagłówków, z ich identyfikatorami '''id''', * {{lru|Moduły/StronicowyParser/Kategorie}} - zwraca kategorie, tylko raz przetworzone i policzone, zgłaszane przez {{Code|{{m|StronicowyParser|WstawKategorie}}}}, * {{lru|Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka lub artykułu książki, zależnie od ustawień, jego numeru, lub odwrotnie, * {{lru|Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek}} - funkcje pobierania, na podstawie nazwy nagłówka, jego numeru, lub odwrotnie, * {{lru|Moduły/StronicowyParser/NumerObiektu}} - funkcje numerowania uchwytów, przypisywanie uchwytom linków do nagłówków lub uchwytom zawartości tekstów, * {{lru|Moduły/StronicowyParser/NumeracjaObiektówStron}} - funkcja odpowiednio ustawia dane, jaka jest numeracja, jeśli w ogóle istnieje, danego typu obiektu, sprawdza, czy uchwyt obiektu się powtarza, przy numeracji uwzględniany jest numer artykułu. * {{lru|Moduły/StronicowyParser/Potrzebne}} - * {{lru|Moduły/StronicowyParser/Pomocne}} - * {{lru|Moduły/StronicowyParser/Problemy}} - funkcje sprawdzania, czy jest taki, i dodawania, problemów do tablicy, * {{lru|Moduły/StronicowyParser/Rozdziały}} ('''spis treści''') - funkcje, do przygotowania tekstów spisów treści, do dalszej obróbki przez funkcje z: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, funkcje stąd korzystają z funkcji modułu: {{LinkPatrz|AnalizaSpisuRzeczy}}, do wydzielenia z całego spisu jego fragmentu, aby dało się go łatwo podzielić na nagłówki, z ich parametrami, i ich teksty rozdziałów, robione jest to poprzez funkcję główna z: {{LinkPatrz|ZbieranieDanychStron}}, * {{lru|Moduły/StronicowyParser/SpisTreści}} ('''spis treści''') - spis treści dla jego podmodułów, * {{lru|Moduły/StronicowyParser/StronaSubst}} - strona, a w niej funkcje, do sprawdzania, czy dana podana strona jest stroną zbiorczą, ładuje kod strony zbiorczej dla szablonów {{s|StronaSubst}} i {{s|KsiążkaSubst}}, także przygotowuje wpisy do spisu treści {{s|Spis treści}} ({{s|Spis treści zwinięty}}), czy {{s|TOC}}, a nawet {{s|TOC limit}} * {{lru|Moduły/StronicowyParser/Tekst}} - są to funkcje do ładowania tekstu stron, nawet jego w sposób rekurencyjny, * {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}} {{Patrz|ZbieranieDanychStron}} ('''spis treści''') - moduł do zbierania informacji o aktualnej stronie, nie spisie treści, co do uchwytów pewnych obiektów i dalszych informacji o nich, * {{lru|Moduły/StronicowyParser/SzablonyTekstu}} - funkcje aktualizowania informacji specjalne dla szablonów {{s|PobierzŚródtekst}} na podstawie informacji w szablonach {{s|Śródtekst}} w tym samym lub na innej stronie artykułu książki, czy na innej stronie nieartykularnej (książkowej), * {{lru|Moduły/StronicowyParser/informacje}} - moduł ładujący informacje o danej stronie, dołączony raz na całą nią, * {{lru|Moduły/StronicowyParser/obiekty}} - zestaw stałych tablicowych ładowanych raz na całą stronę. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 23hlamnrihbuzgp75k31dvyjo6yplb9 Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III 4 63512 552731 552673 2026-08-21T16:19:25Z Persino 2851 /* {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} */ 552731 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} == Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - linia do sprawdzenia, * {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy. Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, * {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania, * {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania, * {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu. ; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}} * Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. * Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}. * Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end; </syntaxhighlight> Parametry fukcji: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik, * {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, jeśli są: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}}, * {{Code|jak}} - jak w: {{LinkPatrz|jak}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: * {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli wyszukiwana linia spełniająca pewne kryteria. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ss1bksb40od42vnh2zro43d294mgwua Wikibooks:Moduły/StronicowyParser/Kategorie 4 63514 552715 551537 2026-08-21T14:42:30Z Persino 2851 /* Dalszy opis funkcji - część III */ 552715 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Kategorie}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje w tym module służą do zgłaszania kategorii zgłaszanych przez '''Stronicowy Parser''', poprzez proste wywołanie w szablonie: {{Code|{{m|StronicowyParser|WstawKategorie}}}}, który wywołuje funkcję: {{Code|{{m|StronicowyParser/Kategorie|WstawKategorie}}}}. Kategorie są liczone raz na cały moduł poprzez wywołanie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, za pomocą funkcji: {{LzLua|mw.loadData}}. == {{Śródtytuł|p.InformacjeKategorie}}{{Code|p.InformacjeKategorie}} == Funkcja do generowania kategorii generowane przez '''Stronicowy Parser'''. <syntaxhighlight lang="lua"> function p.InformacjeKategorie()...end; </syntaxhighlight> Parametry funkcji: * Brak. Uruchamiana jest funkcja tablicowa ładowana raz na całą stronę: <syntaxhighlight lang="lua"> local tabela_listy_danych_analizy_ksiazki=mw.loadData('Module:StronicowyParser/informacje').tablica_zebranych_danych_woluminowych; </syntaxhighlight> Wytłumaczenie zmiennych: * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tabela, z której są uzyskiwane dane o problemach, by uzyskać z niej wiedzę o kategoriach. Tej zmiennej tablicowej, jeśli nie istnieje jej podtablica o kluczu: {{Code|problemy}} {{Patrz|problemy}}, wtedy ta funkcja jest zakańczana. Ale jeśli dodatkowo jej podtablica o kluczu: {{Code|ktory_szablon_stronicowy_ma_zwracac_kategorie}} {{Patrz|ktory_szablon_stronicowy_ma_zwracac_kategorie}}, nie istnieje, też wtedy funkcja jest zakańczana, pod warunkiem, jeśli poprzednim razem się nie zakończyła. Funkcja liczy nazwy ksiązki danego artykułu, tzn.: {{Code|nazwa_przestrzeni_nazw_strony}} {{Patrz|nazwa_przestrzeni_nazw_strony}}, {{Code|nazwa_przestrzeni_nazw_ksiazki_strony}} {{Patrz|nazwa_przestrzeni_nazw_ksiazki_strony}} i {{Code|nazwa_ksiazki_strony}} {{Patrz|nazwa_ksiazki_stronynazwa_ksiazki_strony}}, uzyskiwane z {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, z podzmiennych o kluczach kolejno: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_woluminu}} {{Patrz|nazwa_przestrzeni_woluminu}} i {{Code|nazwa_woluminu}} {{Patrz|nazwa_woluminu}}. Dla poszczególnych przestrzeni książkowych, tzn.: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, {{Np|User|link=tak}} (w przestrzeni użytkownika), {{Np|Project|link=tak}} (w niby przestrzeni nazw: '''{{ls2|Brudnopis}}/<użytkownik>/''') i dla innych przestrzeni użytkowych (niepodręcznikowych), są inicjowane zmienne: {{Code|strony_z_wielkiej_litery}} {{Patrz|strony_z_wielkiej_litery}} i {{Code|strony_z_malej_litery}} {{Patrz|strony_z_malej_litery}}, czyli pierwsza nazwa zaczyna się od duzej litery a druga od małej. === {{Śródtytuł|Czy_jest_taki_element_w_tabeli_problemow}}{{Code|Czy_jest_taki_element_w_tabeli_problemow}} === Funkcja sprawdza, czy taki problem istnieje w podanej tabeli. <syntaxhighlight lang="lua"> local function Czy_jest_taki_element_w_tabeli_problemow(element, tablica_nazwy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|element}} {{Patrz|element}} - klucz danego problemu, * {{Code|tablica_nazwy_ksiazki}} {{Patrz|tablica_nazwy_ksiazki}} - tablica, w której szukamy problemu. === {{Śródtytuł|Dodaj_kategorie_naglowkuj_szczegolne}}{{Code|Dodaj_kategorie_naglowkuj_szczegolne}} === Funkcja służy do zgłaszania błędów w przypadku szablonu: {{s|Śródtytuł}} i {{s|LinkŚródtytuł}}, dotyczące strony dołączonej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Dodaj_kategorie_naglowkuj_szczegolne(kategoria_bledu,czesc_nazwy_kategorii)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|kategoria_bledu}} {{Patrz|kategoria_bledu}} - kod problemu dla zgłaszania błędu w postaci kategorii, * {{Code|czesc_nazwy_kategorii}} {{Patrz|czesc_nazwy_kategorii}} - dokończenie nazwy strony zgłaszanej kategorii. === {{Śródtytuł|Dodaj_kategorie_naglowkuj_ogolne}}{{Code|Dodaj_kategorie_naglowkuj_ogolne}} === Funkcja służy do zgłaszania błędów w przypadku szablonu: {{s|Śródtytuł}} i {{s|LinkŚródtytuł}}, dotyczące strony korzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Dodaj_kategorie_naglowkuj_ogolne(zmienna_korzystane,czesc_nazwy_kategorii)...end; </syntaxhighlight> Parameetry funkcji: * {{Code|zmienna_korzystane}} {{Patrz|zmienna_korzystane}} - kod problemu zgłaszanej kategorii, * {{Code|czesc_nazwy_kategorii}} - jak w: {{LinkPatrz|czesc_nazwy_kategorii}}. === Dalszy opis funkcji === Tutaj są opisywane kody, które są wykorzystywane do zgłaszanych nazw kategorii, a te kody są ustawiane przez oprogramowanie '''Stronicowego Parsera'''. ==== Dalszy opis funkcji - część I ==== {{Tab}}Dla podtablicy: {{LinkPatrz|problemy}}, dla jej też podtablicy dla klucza o nazwie: {{Code|problemy książkowe}} {{Patrz|problemy książkowe}}, sa generowane podkategorie. Kody zgłaszanych problemów: * {{Code|błędy uchwytów dołączonych stron}} {{Patrz|błędy uchwytów dołączonych stron}}, * {{Code|brak spisów treści do dołączonych stron}} {{Patrz|brak spisów treści do dołączonych stron}}, * {{Code|brak spisów treści do dołączonych książek na ich stronach głównych}} {{Patrz|brak spisów treści do dołączonych książek na ich stronach głównych}}, * {{Code|dołączone strony główne nie istnieją}} {{Patrz|dołączone strony główne nie istnieją}}. Dla: {{LinkPatrz|brak spisów treści do dołączonych stron}}, są generowane kategorie, gdy nie są ustawione problemy: {{Code|brak spisów treści do dołączonych książek na ich stronach głównych}} {{LinkPatrz|brak spisów treści do dołączonych książek na ich stronach głównych}} i {{Code|dołączone strony główne nie istnieją}} {{LinkPatrz|dołączone strony główne nie istnieją}}. Dla: {{LinkPatrz|brak spisów treści do dołączonych książek na ich stronach głównych}}, są generowanekategorie, gdy nie są ustawione problemy: {{Code|dołączone strony główne nie istnieją}} {{LinkPatrz|dołączone strony główne nie istnieją}}. Dla: {{LinkPatrz|dołączone strony główne nie istnieją}}, gdy strona (artykuł) nie należą do aktualnej książki. Jest uruchamiana funkcja: {{LinkŚródtytuł|Dodaj_kategorie_naglowkuj_szczegolne}}, którego wywołania są: <syntaxhighlight lang="lua"> Dodaj_kategorie_naglowkuj_szczegolne("powtórka nagłówek w stronie dołączonej","z wielokrotnymi użyciami szablonu nagłówka w jednym nagłówku"); Dodaj_kategorie_naglowkuj_szczegolne("nagłowek w tekście rozdziału w stronie dołączonej","z użyciami szablonu nagłówka w tekstach rozdziałów"); </syntaxhighlight> ==== Dalszy opis funkcji - część II ==== Dla obiektów z tablicy: {{Code|{{sr|#p.tablica_obiektowych_form|p=StronicowyParser/obiekty}}}}, jeśli są ustawione problemy do zgłoszenia, jeśli są ustawione, a one są: Kody zgłaszanych problemów dla elementów nazwanych i nienazwanych: * {{Code|błędy uchwytów korzystanych stron}} {{Patrz|błędy uchwytów korzystanych stron}} - dla wersji {{ZobaczTeż|LinkPobierzObiekt}} bez i z: {{Code|Link}} i {{Code|Pobierz}}, * {{Code|puste parametry szablonów stronicowych linkujących}} {{Patrz|puste parametry szablonów stronicowych linkujących}} - dla obiektów, nie: {{LinkZobaczTeż|LinkPobierzObiekt}}, z trzecim parametrem od: {{Code|1}} do {{Code|3}}, dla funkcji: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, * {{Code|brak uchwytu}} {{Patrz|brak uchwytu}} - dla elementów z: {{LinkZobaczTeż|LinkPobierzObiekt}}, z brakiem uchwytów do obiektów. ==== Dalszy opis funkcji - część III ==== Dla tablicy o kluczu: {{LinkPatrz|problemy}}, są generowane kategorie, jeśli są ustawione z któreś kodów problemów, jeżeli ich wartości przyjmują wartość {{Code|0}}, czyli: * {{Code|nieprawidłowe nazwy korzystanych stron}} {{Patrz|nieprawidłowe nazwy korzystanych stron}}, * {{Code|nieprawidłowe nazwy stron dołączanych do stron}} {{Patrz|nieprawidłowe nazwy stron dołączanych do stron}}, * {{Code|strona nie istnieje}} {{Patrz|strona nie istnieje}}, * {{Code|błąd wewnętrzny modułu lua stronicowego parsera}} {{Patrz|błąd wewnętrzny modułu lua stronicowego parsera}}, * {{Code|niedozwolone znaki w spisach treści}} {{Patrz|niedozwolone znaki w spisach treści}}. ==== Dalszy opis funkcji - część IV ==== Dla tablicy o kluczu: {{LinkPatrz|problemy}}, są generowane kategorie, jeśli są ustawione któreś kodów problemów dla poszczególnych przestrzeni stron, w któreś one leżą: * {{Code|korzystana strona główna nie istnieje}} {{Patrz|korzystana strona główna nie istnieje}}. ==== Dalszy opis funkcji - zebrane nazwy stron kategorii ==== Gdy zbiór zebranych stron jest niepusty, wtedy te nazwy są wstawiane do funkcji: {{Code|{{sr|#p.Kategorie|p=Kategorie}}}}. == {{Śródtytuł|p.WstawKategorie}}{{Code|p.WstawKategorie}} == Gdy są ustawione zmienne szablonowe dziecka funkcji tej ramki, lub rodzica, wtedy dla zmiennych najpierw tego pierwszego, a później tego drugiego, ale parametrów o nazwach: {{Code|bez kategorii}} {{Patrz|bez kategorii}} i {{Code|dokumentacja}} {{Patrz|dokumentacja}}. Gdy dla {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, gdy ustawione nie są problemy: {{LinkPatrz|problemy}} i {{LinkPatrz|ktory_szablon_stronicowy_ma_zwracac_kategorie}}, to funkcja idzie dalej, przeciwnie, ona się zakańcza. Jest liczona nazwa szablonu i kod uchwytu przy pomocy kodów kolejno: <syntaxhighlight lang="lua"> local nazwa_szablonu_rodzica=frame.args[2] or pf.args["nazwa szablonu rodzica"] or require("Module:Szablonowe").NazwaSzablonu(pf:getTitle()); </syntaxhighlight> Jeśli nie ma uchwytu, to funkcja się zakańcza, przeciwnie kod jego jest odkodowany z: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}. Wtedy są liczone zmienne na podstawie: <syntaxhighlight lang="lua"> local ktory_szablon_stronicowy_ma_zwracac_kategorie1=nazwa_szablonu_rodzica..":"..kod_uchwytu; local ktory_szablon_stronicowy_ma_zwracac_kategorie2=tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie; </syntaxhighlight> Jeżeli obie te zmienne są policzone i są sobie równe, wtedy kod idzie do instrukcji warunkowej, wywołując przy pomocy funkcji: {{LzLua|mw.loadData}}, wywołując ten opisywany moduł, a właściwie funkcję: {{LinkŚródtytuł|p.InformacjeKategorie}}, z poziomu modułu: {{Code|{{ld2|StronicowyParser/InformacjeKategorie}}}}, wtedy otrzymujemy tablicę, z którego liczymy podtablicę o kluczu: {{Code|informacje_o_kategoriach_stronicowego_parsera}} {{Patrz|informacje_o_kategoriach_stronicowego_parsera}}, który zawiera policzone raz na stronę wszystkie kategorie zgłoszone przez '''Stronicowy Parser''', które są zwracane przez tą funkcję. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rwl4oiua7x3s1h23cdaz9600dhknzzi 552716 552715 2026-08-21T14:43:13Z Persino 2851 /* Dalszy opis funkcji - część IV */ 552716 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Kategorie}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje w tym module służą do zgłaszania kategorii zgłaszanych przez '''Stronicowy Parser''', poprzez proste wywołanie w szablonie: {{Code|{{m|StronicowyParser|WstawKategorie}}}}, który wywołuje funkcję: {{Code|{{m|StronicowyParser/Kategorie|WstawKategorie}}}}. Kategorie są liczone raz na cały moduł poprzez wywołanie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, za pomocą funkcji: {{LzLua|mw.loadData}}. == {{Śródtytuł|p.InformacjeKategorie}}{{Code|p.InformacjeKategorie}} == Funkcja do generowania kategorii generowane przez '''Stronicowy Parser'''. <syntaxhighlight lang="lua"> function p.InformacjeKategorie()...end; </syntaxhighlight> Parametry funkcji: * Brak. Uruchamiana jest funkcja tablicowa ładowana raz na całą stronę: <syntaxhighlight lang="lua"> local tabela_listy_danych_analizy_ksiazki=mw.loadData('Module:StronicowyParser/informacje').tablica_zebranych_danych_woluminowych; </syntaxhighlight> Wytłumaczenie zmiennych: * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tabela, z której są uzyskiwane dane o problemach, by uzyskać z niej wiedzę o kategoriach. Tej zmiennej tablicowej, jeśli nie istnieje jej podtablica o kluczu: {{Code|problemy}} {{Patrz|problemy}}, wtedy ta funkcja jest zakańczana. Ale jeśli dodatkowo jej podtablica o kluczu: {{Code|ktory_szablon_stronicowy_ma_zwracac_kategorie}} {{Patrz|ktory_szablon_stronicowy_ma_zwracac_kategorie}}, nie istnieje, też wtedy funkcja jest zakańczana, pod warunkiem, jeśli poprzednim razem się nie zakończyła. Funkcja liczy nazwy ksiązki danego artykułu, tzn.: {{Code|nazwa_przestrzeni_nazw_strony}} {{Patrz|nazwa_przestrzeni_nazw_strony}}, {{Code|nazwa_przestrzeni_nazw_ksiazki_strony}} {{Patrz|nazwa_przestrzeni_nazw_ksiazki_strony}} i {{Code|nazwa_ksiazki_strony}} {{Patrz|nazwa_ksiazki_stronynazwa_ksiazki_strony}}, uzyskiwane z {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, z podzmiennych o kluczach kolejno: {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_woluminu}} {{Patrz|nazwa_przestrzeni_woluminu}} i {{Code|nazwa_woluminu}} {{Patrz|nazwa_woluminu}}. Dla poszczególnych przestrzeni książkowych, tzn.: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, {{Np|User|link=tak}} (w przestrzeni użytkownika), {{Np|Project|link=tak}} (w niby przestrzeni nazw: '''{{ls2|Brudnopis}}/<użytkownik>/''') i dla innych przestrzeni użytkowych (niepodręcznikowych), są inicjowane zmienne: {{Code|strony_z_wielkiej_litery}} {{Patrz|strony_z_wielkiej_litery}} i {{Code|strony_z_malej_litery}} {{Patrz|strony_z_malej_litery}}, czyli pierwsza nazwa zaczyna się od duzej litery a druga od małej. === {{Śródtytuł|Czy_jest_taki_element_w_tabeli_problemow}}{{Code|Czy_jest_taki_element_w_tabeli_problemow}} === Funkcja sprawdza, czy taki problem istnieje w podanej tabeli. <syntaxhighlight lang="lua"> local function Czy_jest_taki_element_w_tabeli_problemow(element, tablica_nazwy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|element}} {{Patrz|element}} - klucz danego problemu, * {{Code|tablica_nazwy_ksiazki}} {{Patrz|tablica_nazwy_ksiazki}} - tablica, w której szukamy problemu. === {{Śródtytuł|Dodaj_kategorie_naglowkuj_szczegolne}}{{Code|Dodaj_kategorie_naglowkuj_szczegolne}} === Funkcja służy do zgłaszania błędów w przypadku szablonu: {{s|Śródtytuł}} i {{s|LinkŚródtytuł}}, dotyczące strony dołączonej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Dodaj_kategorie_naglowkuj_szczegolne(kategoria_bledu,czesc_nazwy_kategorii)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|kategoria_bledu}} {{Patrz|kategoria_bledu}} - kod problemu dla zgłaszania błędu w postaci kategorii, * {{Code|czesc_nazwy_kategorii}} {{Patrz|czesc_nazwy_kategorii}} - dokończenie nazwy strony zgłaszanej kategorii. === {{Śródtytuł|Dodaj_kategorie_naglowkuj_ogolne}}{{Code|Dodaj_kategorie_naglowkuj_ogolne}} === Funkcja służy do zgłaszania błędów w przypadku szablonu: {{s|Śródtytuł}} i {{s|LinkŚródtytuł}}, dotyczące strony korzystanej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Dodaj_kategorie_naglowkuj_ogolne(zmienna_korzystane,czesc_nazwy_kategorii)...end; </syntaxhighlight> Parameetry funkcji: * {{Code|zmienna_korzystane}} {{Patrz|zmienna_korzystane}} - kod problemu zgłaszanej kategorii, * {{Code|czesc_nazwy_kategorii}} - jak w: {{LinkPatrz|czesc_nazwy_kategorii}}. === Dalszy opis funkcji === Tutaj są opisywane kody, które są wykorzystywane do zgłaszanych nazw kategorii, a te kody są ustawiane przez oprogramowanie '''Stronicowego Parsera'''. ==== Dalszy opis funkcji - część I ==== {{Tab}}Dla podtablicy: {{LinkPatrz|problemy}}, dla jej też podtablicy dla klucza o nazwie: {{Code|problemy książkowe}} {{Patrz|problemy książkowe}}, sa generowane podkategorie. Kody zgłaszanych problemów: * {{Code|błędy uchwytów dołączonych stron}} {{Patrz|błędy uchwytów dołączonych stron}}, * {{Code|brak spisów treści do dołączonych stron}} {{Patrz|brak spisów treści do dołączonych stron}}, * {{Code|brak spisów treści do dołączonych książek na ich stronach głównych}} {{Patrz|brak spisów treści do dołączonych książek na ich stronach głównych}}, * {{Code|dołączone strony główne nie istnieją}} {{Patrz|dołączone strony główne nie istnieją}}. Dla: {{LinkPatrz|brak spisów treści do dołączonych stron}}, są generowane kategorie, gdy nie są ustawione problemy: {{Code|brak spisów treści do dołączonych książek na ich stronach głównych}} {{LinkPatrz|brak spisów treści do dołączonych książek na ich stronach głównych}} i {{Code|dołączone strony główne nie istnieją}} {{LinkPatrz|dołączone strony główne nie istnieją}}. Dla: {{LinkPatrz|brak spisów treści do dołączonych książek na ich stronach głównych}}, są generowanekategorie, gdy nie są ustawione problemy: {{Code|dołączone strony główne nie istnieją}} {{LinkPatrz|dołączone strony główne nie istnieją}}. Dla: {{LinkPatrz|dołączone strony główne nie istnieją}}, gdy strona (artykuł) nie należą do aktualnej książki. Jest uruchamiana funkcja: {{LinkŚródtytuł|Dodaj_kategorie_naglowkuj_szczegolne}}, którego wywołania są: <syntaxhighlight lang="lua"> Dodaj_kategorie_naglowkuj_szczegolne("powtórka nagłówek w stronie dołączonej","z wielokrotnymi użyciami szablonu nagłówka w jednym nagłówku"); Dodaj_kategorie_naglowkuj_szczegolne("nagłowek w tekście rozdziału w stronie dołączonej","z użyciami szablonu nagłówka w tekstach rozdziałów"); </syntaxhighlight> ==== Dalszy opis funkcji - część II ==== Dla obiektów z tablicy: {{Code|{{sr|#p.tablica_obiektowych_form|p=StronicowyParser/obiekty}}}}, jeśli są ustawione problemy do zgłoszenia, jeśli są ustawione, a one są: Kody zgłaszanych problemów dla elementów nazwanych i nienazwanych: * {{Code|błędy uchwytów korzystanych stron}} {{Patrz|błędy uchwytów korzystanych stron}} - dla wersji {{ZobaczTeż|LinkPobierzObiekt}} bez i z: {{Code|Link}} i {{Code|Pobierz}}, * {{Code|puste parametry szablonów stronicowych linkujących}} {{Patrz|puste parametry szablonów stronicowych linkujących}} - dla obiektów, nie: {{LinkZobaczTeż|LinkPobierzObiekt}}, z trzecim parametrem od: {{Code|1}} do {{Code|3}}, dla funkcji: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, * {{Code|brak uchwytu}} {{Patrz|brak uchwytu}} - dla elementów z: {{LinkZobaczTeż|LinkPobierzObiekt}}, z brakiem uchwytów do obiektów. ==== Dalszy opis funkcji - część III ==== Dla tablicy o kluczu: {{LinkPatrz|problemy}}, są generowane kategorie, jeśli są ustawione z któreś kodów problemów, jeżeli ich wartości przyjmują wartość {{Code|0}}, czyli: * {{Code|nieprawidłowe nazwy korzystanych stron}} {{Patrz|nieprawidłowe nazwy korzystanych stron}}, * {{Code|nieprawidłowe nazwy stron dołączanych do stron}} {{Patrz|nieprawidłowe nazwy stron dołączanych do stron}}, * {{Code|strona nie istnieje}} {{Patrz|strona nie istnieje}}, * {{Code|błąd wewnętrzny modułu lua stronicowego parsera}} {{Patrz|błąd wewnętrzny modułu lua stronicowego parsera}}, * {{Code|niedozwolone znaki w spisach treści}} {{Patrz|niedozwolone znaki w spisach treści}}. ==== Dalszy opis funkcji - część IV ==== Dla tablicy o kluczu: {{LinkPatrz|problemy}}, są generowane kategorie, jeśli są ustawione z któreś kodów problemów dla poszczególnych przestrzeni stron, w któreś one leżą: * {{Code|korzystana strona główna nie istnieje}} {{Patrz|korzystana strona główna nie istnieje}}. ==== Dalszy opis funkcji - zebrane nazwy stron kategorii ==== Gdy zbiór zebranych stron jest niepusty, wtedy te nazwy są wstawiane do funkcji: {{Code|{{sr|#p.Kategorie|p=Kategorie}}}}. == {{Śródtytuł|p.WstawKategorie}}{{Code|p.WstawKategorie}} == Gdy są ustawione zmienne szablonowe dziecka funkcji tej ramki, lub rodzica, wtedy dla zmiennych najpierw tego pierwszego, a później tego drugiego, ale parametrów o nazwach: {{Code|bez kategorii}} {{Patrz|bez kategorii}} i {{Code|dokumentacja}} {{Patrz|dokumentacja}}. Gdy dla {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, gdy ustawione nie są problemy: {{LinkPatrz|problemy}} i {{LinkPatrz|ktory_szablon_stronicowy_ma_zwracac_kategorie}}, to funkcja idzie dalej, przeciwnie, ona się zakańcza. Jest liczona nazwa szablonu i kod uchwytu przy pomocy kodów kolejno: <syntaxhighlight lang="lua"> local nazwa_szablonu_rodzica=frame.args[2] or pf.args["nazwa szablonu rodzica"] or require("Module:Szablonowe").NazwaSzablonu(pf:getTitle()); </syntaxhighlight> Jeśli nie ma uchwytu, to funkcja się zakańcza, przeciwnie kod jego jest odkodowany z: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}. Wtedy są liczone zmienne na podstawie: <syntaxhighlight lang="lua"> local ktory_szablon_stronicowy_ma_zwracac_kategorie1=nazwa_szablonu_rodzica..":"..kod_uchwytu; local ktory_szablon_stronicowy_ma_zwracac_kategorie2=tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie; </syntaxhighlight> Jeżeli obie te zmienne są policzone i są sobie równe, wtedy kod idzie do instrukcji warunkowej, wywołując przy pomocy funkcji: {{LzLua|mw.loadData}}, wywołując ten opisywany moduł, a właściwie funkcję: {{LinkŚródtytuł|p.InformacjeKategorie}}, z poziomu modułu: {{Code|{{ld2|StronicowyParser/InformacjeKategorie}}}}, wtedy otrzymujemy tablicę, z którego liczymy podtablicę o kluczu: {{Code|informacje_o_kategoriach_stronicowego_parsera}} {{Patrz|informacje_o_kategoriach_stronicowego_parsera}}, który zawiera policzone raz na stronę wszystkie kategorie zgłoszone przez '''Stronicowy Parser''', które są zwracane przez tą funkcję. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fg4tcap9balk9w9ldfo8jv56wq0f25e Śpiewnik/Aaa, kotki dwa/Tekst 0 63654 552740 545798 2026-08-21T17:40:51Z Ashaio 4702 Starsza wersja tekstu 552740 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaTekst}} == Tekst z 1867 == '''Opracowanie:''' Oskar Kolberg (1814–1890) <poem> A wa, kotki dwa, szare bure obydwa, Letą do lasa i wołają hopsasa. </poem> '''Źródło:''' Oskar Kolberg, ''[https://polona.pl/item-view/d4ca8fc3-1022-4a5c-87f4-5cec93a717f7?page=68 Lud : jego zwyczaje, sposób życia, mowa, podania, przysłowia, obrzędy, gusła, zabawy, pieśni, muzyka i tańce. Ser. 4, Kujawy. Cz. 2]''. Warszawa, 1867. S.&nbsp;63 (pieśń 252). == Teksty z 1895 == '''Opracowanie:''' Jan Karłowicz; od panny Zofii A. Kowerskiej z Józwowa pod Bychawą (powiat lubelski). {{Kolumny|3| <poem> 1. Aa, kotki dwa, Szare, bure obydwa, Jeden szary, drugi bury, Oba łapią myszy, szczury. 2. Aa, kotki dwa, Szare, bure obydwa, Jeden szary, drugi biały, Oba mi się spodobały. 3. Aa, kotki dwa, Szare, bure obydwa, Nic nie będą robiły, Ino dziecko bawiły. </poem> }} '''Źródło:''' ''[https://polona.pl/item-view/79d48005-eae7-4e26-b727-474f3926dce6?page=74 Wisła : miesięcznik geograficzno-etnograficzny T.9 (stycz./marz. 1895), z. 1]''. Warszawa, 1887-[1922]. S. 132. '''Opracowanie:''' Jan Karłowicz; od p. Ignacji Piątkowskiej ze Smardzewa pod Sieradzem. {{Kolumny|3| <poem> 1. Aa, kotki dwa, Szare, bure obydwa, 2. Nic nie będą robiły, Tylko dziecko bawiły. 3. Jak się kotki rozigrały, To dziecinkę kolebały. 4. Jeden szary, drugi bury, A ten trzeci myk do dziury. 5. Żeby tylko jeden był, Toby z dzieckiem mleczko pił. </poem> }} '''Źródło:''' ''[https://polona.pl/item-view/79d48005-eae7-4e26-b727-474f3926dce6?page=74 Wisła : miesięcznik geograficzno-etnograficzny T.9 (stycz./marz. 1895), z. 1]''. Warszawa, 1887-[1922]. S. 133.<br> == Tekst z 1920 == '''Autor:''' nieznany (kołysanka ludowa)<br> Opracowanie: Zofia Rogoszówna (1881-1921)<br> {{Kolumny|2| <poem> 1. A-a, kotki dwa, szare bure obydwa, Jeden duży, drugi mały, oba mi się spodobały. 2. A-a, kotki dwa, szare bure obydwa, nic nie będą robiły, tylko Zbysia bawiły. 3. A-a, kotki dwa, szare bure obydwa, jeden pobiegł do lasu, narobił tam hałasu. 4. [A-a, kotki dwa, szare bure obydwa,] Drugi biegał po dachu, zgubił butki ze strachu. 5. A – a kotki dwa, szare bure obydwa, chodzą sobie po sieni, miauczą głośno — „pieczeni!“ 6. A – a kotki dwa, szare bure obydwa, biega szary, biega bury, aż obydwa czmych, do dziury. </poem> }} '''Źródło:''' Zofia Rogoszówna, ''[https://pl.wikisource.org/wiki/Indeks:PL_Rogosz%C3%B3wna_Zofia_Sroczka_kaszk%C4%99_warzy%C5%82a.djvu Sroczka kaszkę warzyła]''. Lwów ; Warszawa, 1920. S. 18–19. == Tekst z 1927 == '''Autor:''' nieznany (kołysanka ludowa)<br> Opracowanie: Henryk Biegeleisen (1855–1934)<br> {{Kolumny|1| <poem> Aa a, kotki dwa, Szare, bure obydwa; Jeden duży, drugi mały, Oba mi się podobały. </poem> }} '''Źródło:''' Henryk Biegeleisen, ''[https://polona.pl/item-view/f9d24b38-72dd-41a9-b726-eb9167fe5555?page=172 Matka i dziecko w obrzędach, wierzeniach i zwyczajach ludu polskiego]''. Lwów, 1927, S. 167. 3v8pa0yntwvbfqsyj5nypadmoy6lf24 Śpiewnik/Aaa, kotki dwa/Muzyka 0 63655 552739 545799 2026-08-21T17:35:48Z Ashaio 4702 Starsza wersja melodii 552739 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaMuzyka}} == Muzyka z 1867 == '''Autor:''' nieznany (melodia ludowa) Opracowanie: Oskar Kolberg (1814–1890) <score raw="1" vorbis="1"> \version "2.12.0" \header{ title = "A wa kotki dwa" poet = "Słowa: autor nieznany (piosnka ludowa)" meter = "od Piotrkowa (Głuszyn)" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Oskar Kolberg (1814–1890)" tagline = "" } melodia = { \new Staff \with { midiInstrument = "pan flute" } \relative c''{ \clef treble \key f \major \time 2/4 \tempo "Andantino" \autoBeamOff c4 d | << { \voiceOne \stemUp c8[ e16 g] } \new Voice { \voiceTwo \stemDown \autoBeamOff c,8 c } >> \oneVoice \stemNeutral f4 | c8 c d d | c bes a4 | c4 g | bes8 bes a4 | c8 c << { \voiceOne \stemUp g16[ bes d8] } \new Voice { \voiceTwo \stemDown \autoBeamOff g,8 g } >> \oneVoice \stemNeutral | a8 g f4 | \repeat volta 2 { f4 g | f8[ e] f4 | g8[ a] bes[ a] | g16[ a g8] f4 } } \addlyrics{ \small { A wa, ko -- tki dwa, sza -- ro bu -- re o -- by -- dwa, Le -- tą do la -- sa i wo -- ła -- ją hop sa sa. A a, a a, a a, a a. } } } \score{ \melodia \layout{} } \score{ \unfoldRepeats \melodia \midi{} } </score> '''Źródło:''' Oskar Kolberg, ''[https://polona.pl/item-view/d4ca8fc3-1022-4a5c-87f4-5cec93a717f7?page=133 Lud : jego zwyczaje, sposób życia, mowa, podania, przysłowia, obrzędy, gusła, zabawy, pieśni, muzyka i tańce. Ser. 4, Kujawy. Cz. 2]''. Warszawa, 1867. S.&nbsp;126 (pieśń 252). == Muzyka z 1895 == '''Autor:''' nieznany (melodia ludowa) Opracowanie: Jan Karłowicz; od panny Zofii A. Kowerskiej z Józwowa pod Bychawą (powiat lubelski). <score raw="1" vorbis="1"> \version "2.19.0" \header{ title = "Aaa, kotki dwa" poet = "Słowa: autor nieznany (kołysanka ludowa)" %meter = "Opracowanie:" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Aranżacja: Zofia A. Kowerska lub Jan Karłowicz" tagline = "" } global = { \key f \major \time 2/4 \tempo 4=80 } \score{ << \new Voice = "mel" { \set Staff.midiInstrument = #"flute" \autoBeamOff \relative c'' { \clef treble \global \autoBeamOff c8[( a]) c4 | d8 d c4 | c8 a c c | d d c4 | c8 a c c | c a c c | c a c c | c a c c | c8[( a]) c4 | d8 d c4 | c8 a c c | d d c4 | g8 g a f | c' c c r8 | g g a a | c c c r8 \bar "|." } } \addlyrics { \small { A -- a, kot -- ki dwa, sza -- re, bu -- re o -- by -- dwa, je -- den sza -- ry, dru -- gi bia -- ły, o -- ba mi się spo -- do -- ba -- ły. A -- a, kot -- ki dwa, sza -- re, bu -- re o -- by -- dwa, Nic nie bę -- dą ro -- bi -- ły, I -- no dziec -- ko ba -- wi -- ły. } } >> \midi{} \layout{} } </score> '''Źródło:''' ''[https://polona.pl/item-view/79d48005-eae7-4e26-b727-474f3926dce6?page=74 Wisła : miesięcznik geograficzno-etnograficzny T.9 (stycz./marz. 1895), z. 1]''. Warszawa, 1887-[1922]. S. 132.<br> <score raw="1" vorbis="1"> \version "2.19.0" \header{ title = "Aaa, lulusiu" poet = "Słowa: autor nieznany (kołysanka ludowa)" %meter = "Opracowanie:" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Aranżacja: Zofia A. Kowerska lub Jan Karłowicz" tagline = "" } global = { \tempo 4=80 } \score{ << \new Voice = "mel" { \set Staff.midiInstrument = #"viola" \autoBeamOff \relative c'' { \clef treble \global \autoBeamOff c8[( e]) g4 | f8 e g4 | d8[( c]) e[ g]) | f e d4 \fermata | c8[( e]) g4 | a8[( fis]) g4 | d8[( c]) e[( g]) f8 e d4 \fermata \bar "|." } } \addlyrics { \small { A -- a, lu -- lu -- siu, A -- a, lu -- lu -- siu, A -- a, lu -- lu, A -- a, lu -- lu -- lu. } } >> \midi{} \layout{} } </score> '''Źródło:''' ''[https://polona.pl/item-view/79d48005-eae7-4e26-b727-474f3926dce6?page=74 Wisła : miesięcznik geograficzno-etnograficzny T.9 (stycz./marz. 1895), z. 1]''. Warszawa, 1887-[1922]. S. 132.<br> == Muzyka z 1927 == '''Autor:''' nieznany (melodia ludowa)<br> Aranżacja: Henryk Biegeleisen (1855–1934)<br> <score raw="1" vorbis="1"> \version "2.19.0" \header { title = "Aaa, kotki dwa" poet = "Słowa: autor nieznany (kołysanka ludowa)" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Aranżacja: Henryk Biegeleisen" tagline = "" } \score { \new Staff \with {midiInstrument = "fiddle"} { \clef "violin" \time 2/4 \key d \major \tempo "Andantino" << \new Voice { \relative f' { \autoBeamOff fis8[ e] fis[ e] | d e d4 | cis8 d e fis | e e d4 | fis8 fis g g | e e d d | cis d e fis | e e d d \bar "|." } } \addlyrics { \small { A -- a, kot -- ki dwa, sza -- re, bu -- re o -- by -- dwa; je -- den du -- ży, dru -- gi ma -- ły, o -- ba mi się po -- do -- ba -- ły. } } >> } \layout{} \midi{} } </score> '''Źródło:''' Henryk Biegeleisen, ''[https://polona.pl/item-view/f9d24b38-72dd-41a9-b726-eb9167fe5555?page=172 Matka i dziecko w obrzędach, wierzeniach i zwyczajach ludu polskiego]''. Lwów, 1927, S. 167. 8q6x2vei5ms2l8tlju4qte9w1mzq7i9 552741 552739 2026-08-21T17:46:13Z Ashaio 4702 lit., dr. 552741 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaMuzyka}} == Muzyka z 1867 == '''Autor:''' nieznany (melodia ludowa) Opracowanie: Oskar Kolberg (1814–1890) <score raw="1" vorbis="1"> \version "2.12.0" \header{ title = "A wa kotki dwa" poet = "Słowa: autor nieznany (kołysanka ludowa)" meter = "od Piotrkowa (Głuszyn)" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Oskar Kolberg (1814–1890)" tagline = "" } melodia = { \new Staff \with { midiInstrument = "pan flute" } \relative c''{ \clef treble \key f \major \time 2/4 \tempo "Andantino" \autoBeamOff c4 d | << { \voiceOne \stemUp c8[ e16 g] } \new Voice { \voiceTwo \stemDown \autoBeamOff c,8 c } >> \oneVoice \stemNeutral f4 | c8 c d d | c bes a4 | c4 g | bes8 bes a4 | c8 c << { \voiceOne \stemUp g16[ bes d8] } \new Voice { \voiceTwo \stemDown \autoBeamOff g,8 g } >> \oneVoice \stemNeutral | a8 g f4 | \repeat volta 2 { f4 g | f8[ e] f4 | g8[ a] bes[ a] | g16[ a g8] f4 } } \addlyrics{ \small { A wa, ko -- tki dwa, sza -- re bu -- re o -- by -- dwa, Le -- tą do la -- sa i wo -- ła -- ją hop sa sa. A a, a a, a a, a a. } } } \score{ \melodia \layout{} } \score{ \unfoldRepeats \melodia \midi{} } </score> '''Źródło:''' Oskar Kolberg, ''[https://polona.pl/item-view/d4ca8fc3-1022-4a5c-87f4-5cec93a717f7?page=133 Lud : jego zwyczaje, sposób życia, mowa, podania, przysłowia, obrzędy, gusła, zabawy, pieśni, muzyka i tańce. Ser. 4, Kujawy. Cz. 2]''. Warszawa, 1867. S.&nbsp;126 (pieśń 252). == Muzyka z 1895 == '''Autor:''' nieznany (melodia ludowa) Opracowanie: Jan Karłowicz; od panny Zofii A. Kowerskiej z Józwowa pod Bychawą (powiat lubelski). <score raw="1" vorbis="1"> \version "2.19.0" \header{ title = "Aaa, kotki dwa" poet = "Słowa: autor nieznany (kołysanka ludowa)" %meter = "Opracowanie:" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Aranżacja: Zofia A. Kowerska lub Jan Karłowicz" tagline = "" } global = { \key f \major \time 2/4 \tempo 4=80 } \score{ << \new Voice = "mel" { \set Staff.midiInstrument = #"flute" \autoBeamOff \relative c'' { \clef treble \global \autoBeamOff c8[( a]) c4 | d8 d c4 | c8 a c c | d d c4 | c8 a c c | c a c c | c a c c | c a c c | c8[( a]) c4 | d8 d c4 | c8 a c c | d d c4 | g8 g a f | c' c c r8 | g g a a | c c c r8 \bar "|." } } \addlyrics { \small { A -- a, kot -- ki dwa, sza -- re, bu -- re o -- by -- dwa, je -- den sza -- ry, dru -- gi bia -- ły, o -- ba mi się spo -- do -- ba -- ły. A -- a, kot -- ki dwa, sza -- re, bu -- re o -- by -- dwa, Nic nie bę -- dą ro -- bi -- ły, I -- no dziec -- ko ba -- wi -- ły. } } >> \midi{} \layout{} } </score> '''Źródło:''' ''[https://polona.pl/item-view/79d48005-eae7-4e26-b727-474f3926dce6?page=74 Wisła : miesięcznik geograficzno-etnograficzny T.9 (stycz./marz. 1895), z. 1]''. Warszawa, 1887-[1922]. S. 132.<br> <score raw="1" vorbis="1"> \version "2.19.0" \header{ title = "Aaa, lulusiu" poet = "Słowa: autor nieznany (kołysanka ludowa)" %meter = "Opracowanie:" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Aranżacja: Zofia A. Kowerska lub Jan Karłowicz" tagline = "" } global = { \tempo 4=80 } \score{ << \new Voice = "mel" { \set Staff.midiInstrument = #"viola" \autoBeamOff \relative c'' { \clef treble \global \autoBeamOff c8[( e]) g4 | f8 e g4 | d8[( c]) e[ g]) | f e d4 \fermata | c8[( e]) g4 | a8[( fis]) g4 | d8[( c]) e[( g]) f8 e d4 \fermata \bar "|." } } \addlyrics { \small { A -- a, lu -- lu -- siu, A -- a, lu -- lu -- siu, A -- a, lu -- lu, A -- a, lu -- lu -- lu. } } >> \midi{} \layout{} } </score> '''Źródło:''' ''[https://polona.pl/item-view/79d48005-eae7-4e26-b727-474f3926dce6?page=74 Wisła : miesięcznik geograficzno-etnograficzny T.9 (stycz./marz. 1895), z. 1]''. Warszawa, 1887-[1922]. S. 132.<br> == Muzyka z 1927 == '''Autor:''' nieznany (melodia ludowa)<br> Aranżacja: Henryk Biegeleisen (1855–1934)<br> <score raw="1" vorbis="1"> \version "2.19.0" \header { title = "Aaa, kotki dwa" poet = "Słowa: autor nieznany (kołysanka ludowa)" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Aranżacja: Henryk Biegeleisen" tagline = "" } \score { \new Staff \with {midiInstrument = "fiddle"} { \clef "violin" \time 2/4 \key d \major \tempo "Andantino" << \new Voice { \relative f' { \autoBeamOff fis8[ e] fis[ e] | d e d4 | cis8 d e fis | e e d4 | fis8 fis g g | e e d d | cis d e fis | e e d d \bar "|." } } \addlyrics { \small { A -- a, kot -- ki dwa, sza -- re, bu -- re o -- by -- dwa; je -- den du -- ży, dru -- gi ma -- ły, o -- ba mi się po -- do -- ba -- ły. } } >> } \layout{} \midi{} } </score> '''Źródło:''' Henryk Biegeleisen, ''[https://polona.pl/item-view/f9d24b38-72dd-41a9-b726-eb9167fe5555?page=172 Matka i dziecko w obrzędach, wierzeniach i zwyczajach ludu polskiego]''. Lwów, 1927, S. 167. 6gups3g4zpknhp28ej5iyjb7155rdv6 552743 552741 2026-08-21T17:47:37Z Ashaio 4702 dr. tech. 552743 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaMuzyka}} == Muzyka z 1867 == '''Autor:''' nieznany (melodia ludowa) Opracowanie: Oskar Kolberg (1814–1890) <score raw="1" vorbis="1"> \version "2.12.0" \header{ title = "A wa kotki dwa" poet = "Słowa: autor nieznany (kołysanka ludowa)" meter = "od Piotrkowa (Głuszyn)" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Oskar Kolberg (1814–1890)" tagline = "" } melodia = { \new Staff \with { midiInstrument = "pan flute" } \relative c''{ \clef treble \key f \major \time 2/4 \tempo "Andantino" \autoBeamOff c4 d | << { \voiceOne \stemUp c8[ e16 g] } \new Voice { \voiceTwo \stemDown \autoBeamOff c,8 c } >> \oneVoice \stemNeutral f4 | c8 c d d | c bes a4 | c4 g | bes8 bes a4 | c8 c << { \voiceOne \stemUp g16[ bes d8] } \new Voice { \voiceTwo \stemDown \autoBeamOff g,8 g } >> \oneVoice \stemNeutral | a8 g f4 | \repeat volta 2 { f4 g | f8[ e] f4 | g8[ a] bes[ a] | g16[ a g8] f4 } } \addlyrics{ \small { A wa, kotki dwa, sza -- re bu -- re o -- by -- dwa, Le -- tą do la -- sa i wo -- łają hop sa sa. A a, a a, a a, a a. } } } \score{ \melodia \layout{} } \score{ \unfoldRepeats \melodia \midi{} } </score> '''Źródło:''' Oskar Kolberg, ''[https://polona.pl/item-view/d4ca8fc3-1022-4a5c-87f4-5cec93a717f7?page=133 Lud : jego zwyczaje, sposób życia, mowa, podania, przysłowia, obrzędy, gusła, zabawy, pieśni, muzyka i tańce. Ser. 4, Kujawy. Cz. 2]''. Warszawa, 1867. S.&nbsp;126 (pieśń 252). == Muzyka z 1895 == '''Autor:''' nieznany (melodia ludowa) Opracowanie: Jan Karłowicz; od panny Zofii A. Kowerskiej z Józwowa pod Bychawą (powiat lubelski). <score raw="1" vorbis="1"> \version "2.19.0" \header{ title = "Aaa, kotki dwa" poet = "Słowa: autor nieznany (kołysanka ludowa)" %meter = "Opracowanie:" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Aranżacja: Zofia A. Kowerska lub Jan Karłowicz" tagline = "" } global = { \key f \major \time 2/4 \tempo 4=80 } \score{ << \new Voice = "mel" { \set Staff.midiInstrument = #"flute" \autoBeamOff \relative c'' { \clef treble \global \autoBeamOff c8[( a]) c4 | d8 d c4 | c8 a c c | d d c4 | c8 a c c | c a c c | c a c c | c a c c | c8[( a]) c4 | d8 d c4 | c8 a c c | d d c4 | g8 g a f | c' c c r8 | g g a a | c c c r8 \bar "|." } } \addlyrics { \small { A -- a, kot -- ki dwa, sza -- re, bu -- re o -- by -- dwa, je -- den sza -- ry, dru -- gi bia -- ły, o -- ba mi się spo -- do -- ba -- ły. A -- a, kot -- ki dwa, sza -- re, bu -- re o -- by -- dwa, Nic nie bę -- dą ro -- bi -- ły, I -- no dziec -- ko ba -- wi -- ły. } } >> \midi{} \layout{} } </score> '''Źródło:''' ''[https://polona.pl/item-view/79d48005-eae7-4e26-b727-474f3926dce6?page=74 Wisła : miesięcznik geograficzno-etnograficzny T.9 (stycz./marz. 1895), z. 1]''. Warszawa, 1887-[1922]. S. 132.<br> <score raw="1" vorbis="1"> \version "2.19.0" \header{ title = "Aaa, lulusiu" poet = "Słowa: autor nieznany (kołysanka ludowa)" %meter = "Opracowanie:" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Aranżacja: Zofia A. Kowerska lub Jan Karłowicz" tagline = "" } global = { \tempo 4=80 } \score{ << \new Voice = "mel" { \set Staff.midiInstrument = #"viola" \autoBeamOff \relative c'' { \clef treble \global \autoBeamOff c8[( e]) g4 | f8 e g4 | d8[( c]) e[ g]) | f e d4 \fermata | c8[( e]) g4 | a8[( fis]) g4 | d8[( c]) e[( g]) f8 e d4 \fermata \bar "|." } } \addlyrics { \small { A -- a, lu -- lu -- siu, A -- a, lu -- lu -- siu, A -- a, lu -- lu, A -- a, lu -- lu -- lu. } } >> \midi{} \layout{} } </score> '''Źródło:''' ''[https://polona.pl/item-view/79d48005-eae7-4e26-b727-474f3926dce6?page=74 Wisła : miesięcznik geograficzno-etnograficzny T.9 (stycz./marz. 1895), z. 1]''. Warszawa, 1887-[1922]. S. 132.<br> == Muzyka z 1927 == '''Autor:''' nieznany (melodia ludowa)<br> Aranżacja: Henryk Biegeleisen (1855–1934)<br> <score raw="1" vorbis="1"> \version "2.19.0" \header { title = "Aaa, kotki dwa" poet = "Słowa: autor nieznany (kołysanka ludowa)" composer = "Muzyka: autor nieznany (melodia ludowa)" arranger = "Aranżacja: Henryk Biegeleisen" tagline = "" } \score { \new Staff \with {midiInstrument = "fiddle"} { \clef "violin" \time 2/4 \key d \major \tempo "Andantino" << \new Voice { \relative f' { \autoBeamOff fis8[ e] fis[ e] | d e d4 | cis8 d e fis | e e d4 | fis8 fis g g | e e d d | cis d e fis | e e d d \bar "|." } } \addlyrics { \small { A -- a, kot -- ki dwa, sza -- re, bu -- re o -- by -- dwa; je -- den du -- ży, dru -- gi ma -- ły, o -- ba mi się po -- do -- ba -- ły. } } >> } \layout{} \midi{} } </score> '''Źródło:''' Henryk Biegeleisen, ''[https://polona.pl/item-view/f9d24b38-72dd-41a9-b726-eb9167fe5555?page=172 Matka i dziecko w obrzędach, wierzeniach i zwyczajach ludu polskiego]''. Lwów, 1927, S. 167. ofccgwg6aq8jigf813wpmgbg80n0qfv Wikibooks:Moduły/StronicowyParser/Rozdziały 4 63903 552713 551520 2026-08-21T14:38:00Z Persino 2851 /* Rozdziały */ 552713 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Wstęp == Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. === Rozdziały === * Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane: ** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}}, ** Inne (nierównaniowe): *** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}}, *** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}}, **** Rozdziały sztucznego napisu wprowadzenia tekstu, dla szablonów takich jak: {{s|HNumer}}, gdzie jego parametr pierwszy, to zwykły anormalny rozdział dodatni równaniowy, nawet z niedozwoloną liczbą równa się po obu stronach, * Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}}, * Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały/Tom II}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}. === Zmienne spotykane w opisywanych tutaj funkcjach === ==== Zmienne bazy ==== W poniższych funkcjach często spotykamy parametry: * {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst przeważnie zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje, * {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony szablonowe jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych. Jest liczona bez nazwy przestrzeni {{Np|Template|link=tak}}, w tej przestrzeni, a w innych z przestrzeniami, a w {{Np|(main)|link=tak}} z dwukropkiem na początku. ==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ==== * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów. ==== Baza danych wikikodu ==== Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu. ===== Zmienne bazy danych i do nich parametrów ===== * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy. ===== Inne elementy bazy ===== * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku. ==== Funkcje bazy danych i do nich parametrów ==== * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Inne funkcje ==== Inne funkcje używane przez opisywany moduł. ===== Funkcje bazy ===== * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych, * {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej). ===== Inne ===== * {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych. ==== Elementy bazy ==== * {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie, * {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. ==== Inne zmienne ==== * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów === Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji) local tab_obiekt=tab_analiza[obiekt]; if(not tab_obiekt)then return;end; for _,wartosc in pairs(tab_obiekt)do local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(element_wartosc)then element_wartosc[kod]=nil; end; end; end; </syntaxhighlight> Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy === A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne: <syntaxhighlight lang="lua"> local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji) tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; end; </syntaxhighlight> Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli. Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}. == Spis treści == Przedstawia funkcje do zbierania informacji o spisach, ale w sferze wstępnej w wersji preanalizowanej, nie tak jak robi moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, które wykorzystuje ten moduł opisywany, do zbierania informacji o nagłówkach i w nich rozdziałami, z informacjami, które są elementami charakteryzującymi dany artykuł, a nawet rozdział, czyli w tej dokumentacji są te funkcje: * {{lru|Moduły/StronicowyParser/Rozdziały/Tom I}} - do uzyskiwania informacji o sekcji i tekście rozdziału pomiędzy poszczególnymi sekcjami o danych identyfikatorach, * {{lru|Moduły/StronicowyParser/Rozdziały/Tom II}} - do analizowania napisów wprowadzenia tekstu z postaci surowej, w tym rozdziały dodatnie, czy nagłówkowe, * {{lru|Moduły/StronicowyParser/Rozdziały/Tom III}} - do modyfikacji analizowanej strony do lepszego formatu, by później lłatwo dałosię go parsować, by uzyskać pewne, ściśle okreslone elementy informacyjne, * {{lru|Moduły/StronicowyParser/Rozdziały/Tom IV}} - do parsowania linii, ale nie linii będących rozdziałem dodatnim równaniowym, za pomocą zwróconej funkcji, która poza ciałem, ale w wiekszej funkcji rodzicu, są zbieranne informacje, pomędzy analizowanymi liniami, które mogą być rozdziałami, ale nie muszą być, bo niekażda linia jest sekcją w uznaniu fukncji w opisywanym tym module, * {{lru|Moduły/StronicowyParser/Rozdziały/Tom V}} - do skladania i zbierania informacji o rozdziałach i ich tekstach rozdziałów, i z nimi stowarzyszącymi elementami, jest to robione przy pomocy iteratora, który analizuje poszczególne sekcje, wraz z ich informacjami. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0roiats8qehxz0rncx6wtswvgzmxtaj 552714 552713 2026-08-21T14:38:22Z Persino 2851 /* Rozdziały */ 552714 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Wstęp == Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. === Rozdziały === * Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane: ** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}}, ** Inne (nierównaniowe): *** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}}, *** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}}, *** Rozdziały sztucznego napisu wprowadzenia tekstu, dla szablonów takich jak: {{s|HNumer}}, gdzie jego parametr pierwszy, to zwykły anormalny rozdział dodatni równaniowy, nawet z niedozwoloną liczbą równa się po obu stronach, * Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}}, * Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały/Tom II}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}. === Zmienne spotykane w opisywanych tutaj funkcjach === ==== Zmienne bazy ==== W poniższych funkcjach często spotykamy parametry: * {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst przeważnie zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje, * {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony szablonowe jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych. Jest liczona bez nazwy przestrzeni {{Np|Template|link=tak}}, w tej przestrzeni, a w innych z przestrzeniami, a w {{Np|(main)|link=tak}} z dwukropkiem na początku. ==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ==== * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu, * {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu, * {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów. ==== Baza danych wikikodu ==== Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu. ===== Zmienne bazy danych i do nich parametrów ===== * {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy. ===== Inne elementy bazy ===== * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku. ==== Funkcje bazy danych i do nich parametrów ==== * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. ==== Inne funkcje ==== Inne funkcje używane przez opisywany moduł. ===== Funkcje bazy ===== * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych, * {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej). ===== Inne ===== * {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych. ==== Elementy bazy ==== * {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie, * {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. ==== Inne zmienne ==== * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów === Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji) local tab_obiekt=tab_analiza[obiekt]; if(not tab_obiekt)then return;end; for _,wartosc in pairs(tab_obiekt)do local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(element_wartosc)then element_wartosc[kod]=nil; end; end; end; </syntaxhighlight> Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy === A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne: <syntaxhighlight lang="lua"> local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji) tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; end; </syntaxhighlight> Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli. Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}. == Spis treści == Przedstawia funkcje do zbierania informacji o spisach, ale w sferze wstępnej w wersji preanalizowanej, nie tak jak robi moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, które wykorzystuje ten moduł opisywany, do zbierania informacji o nagłówkach i w nich rozdziałami, z informacjami, które są elementami charakteryzującymi dany artykuł, a nawet rozdział, czyli w tej dokumentacji są te funkcje: * {{lru|Moduły/StronicowyParser/Rozdziały/Tom I}} - do uzyskiwania informacji o sekcji i tekście rozdziału pomiędzy poszczególnymi sekcjami o danych identyfikatorach, * {{lru|Moduły/StronicowyParser/Rozdziały/Tom II}} - do analizowania napisów wprowadzenia tekstu z postaci surowej, w tym rozdziały dodatnie, czy nagłówkowe, * {{lru|Moduły/StronicowyParser/Rozdziały/Tom III}} - do modyfikacji analizowanej strony do lepszego formatu, by później lłatwo dałosię go parsować, by uzyskać pewne, ściśle okreslone elementy informacyjne, * {{lru|Moduły/StronicowyParser/Rozdziały/Tom IV}} - do parsowania linii, ale nie linii będących rozdziałem dodatnim równaniowym, za pomocą zwróconej funkcji, która poza ciałem, ale w wiekszej funkcji rodzicu, są zbieranne informacje, pomędzy analizowanymi liniami, które mogą być rozdziałami, ale nie muszą być, bo niekażda linia jest sekcją w uznaniu fukncji w opisywanym tym module, * {{lru|Moduły/StronicowyParser/Rozdziały/Tom V}} - do skladania i zbierania informacji o rozdziałach i ich tekstach rozdziałów, i z nimi stowarzyszącymi elementami, jest to robione przy pomocy iteratora, który analizuje poszczególne sekcje, wraz z ich informacjami. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> blmfam91x228yydly3pfaogo1jgj581 Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II 4 63917 552709 552672 2026-08-21T14:13:18Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 552709 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} {{Patrz|szablon}} - wnętrze jakiego zakodowanego obiektu, * {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu, * {{Code|kod}} {{Patrz|kod}} - kod tego obiektu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}} * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funnkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego, niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu, ** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rkxcv81o3jm9n5wx4x5tj025f3jiw7b 552728 552709 2026-08-21T16:16:55Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 552728 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} {{Patrz|szablon}} - wnętrze jakiego zakodowanego obiektu, * {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu, * {{Code|kod}} {{Patrz|kod}} - kod tego obiektu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}} * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funnkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego, niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu, ** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> kqw1arbhm57o5aoes84jpcp328cxm2v 552729 552728 2026-08-21T16:17:54Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 552729 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=stronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} {{Patrz|szablon}} - wnętrze jakiego zakodowanego obiektu, * {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu, * {{Code|kod}} {{Patrz|kod}} - kod tego obiektu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}} * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funnkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego, niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu, ** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0w3w4d1le9u150jkqc8ivtshi2ijcj1 552730 552729 2026-08-21T16:18:06Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 552730 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} {{Patrz|szablon}} - wnętrze jakiego zakodowanego obiektu, * {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu, * {{Code|kod}} {{Patrz|kod}} - kod tego obiektu, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}} * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funnkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego, niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu, ** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> mriqycm1jgmun3llklelsfladv8322v Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV 4 63919 552702 552674 2026-08-21T13:06:32Z Persino 2851 /* {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} */ 552702 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} == Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy. * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywwanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funcją, do uzyskiwania danych, której wynik zwracamy bezpośrednią w tej funkcji. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w stucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funckji wspomniane poniżej, jego wartość całkowitej zawartości {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, i liczbę w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a także wyszukuje dalszy tekst, który jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2bu91471kb5gkt5dnn6ermb0gn4sboa 552703 552702 2026-08-21T13:06:47Z Persino 2851 /* {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} */ 552703 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} == Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy. * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywwanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funcją, do uzyskiwania danych, której wynik zwracamy bezpośrednią w tej funkcji. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w stucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funckji wspomniane poniżej, jego wartość całkowitej zawartości {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, i liczbę w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a także wyszukuje dalszy tekst, który jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> mmfyu6krzxv4j104gyx01rynzny7c70 552706 552703 2026-08-21T13:38:50Z Persino 2851 /* = {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} */ 552706 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w stucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funckji wspomniane poniżej, jego wartość całkowitej zawartości {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, i liczbę w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a także wyszukuje dalszy tekst, który jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> l5ukzg19i9vdl3ygjnlazyu4mr0o0w5 552707 552706 2026-08-21T13:42:19Z Persino 2851 /* Funkcja zwracająca parametry */ 552707 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w stucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funckji wspomniane poniżej, jego wartość całkowitej zawartości {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, i liczbę w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a także wyszukuje dalszy tekst, który jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bx2f3zinax1ps1qkz50c1g6dz0kcat4 552708 552707 2026-08-21T13:43:20Z Persino 2851 /* {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} */ 552708 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w stucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funckji wspomniane poniżej, jego wartość całkowitej zawartości {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, i liczbę w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a także wyszukuje dalszy tekst, który jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> t19kcmwakvst6xugbf7x4p3mwo8vlo0 552720 552708 2026-08-21T15:05:12Z Persino 2851 /* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */ 552720 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w stucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funkcji wspomniane poniżej, jego wartość całkowitej zawartości {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, i liczbę w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a także wyszukuje dalszy tekst, który jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> k02s67prwjyte4no43fnfx4tsgp82xa 552721 552720 2026-08-21T15:25:12Z Persino 2851 /* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */ 552721 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funkcji wspomniane poniżej, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i o numerze w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a to pierwsze jest uzyskane z dwóch poprzednich z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} danego typu z dwóch, wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w tym większym, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1lkdjx3ch3kcrfa8ch1qnzaty18vkzi 552723 552721 2026-08-21T15:39:37Z Persino 2851 /* Dalszy opis funkcji */ 552723 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego: <syntaxhighlight lang="lua"> return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); </syntaxhighlight> Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}}, czy {{Code|znacznik}}. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funkcji wspomniane poniżej, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i o numerze w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a to pierwsze jest uzyskane z dwóch poprzednich z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} danego typu z dwóch, wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w tym większym, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6aj00fsdr5q8bfz6wmdw8xxbrjbvd2u 552724 552723 2026-08-21T15:40:35Z Persino 2851 /* Dalszy opis funkcji */ 552724 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego: <syntaxhighlight lang="lua"> return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); </syntaxhighlight> Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funkcji wspomniane poniżej, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i o numerze w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a to pierwsze jest uzyskane z dwóch poprzednich z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} danego typu z dwóch, wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w tym większym, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0tem6dqe0aealyleq7awidx7nijxf0y 552725 552724 2026-08-21T16:07:29Z Persino 2851 /* Dalszy opis funkcji */ 552725 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego: <syntaxhighlight lang="lua"> return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); </syntaxhighlight> Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych. Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funkcji wspomniane poniżej, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i o numerze w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a to pierwsze jest uzyskane z dwóch poprzednich z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} danego typu z dwóch, wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w tym większym, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> demdjqec6x63yrs2id82lij4do622ar 552726 552725 2026-08-21T16:13:01Z Persino 2851 /* Dalszy opis funkcji */ 552726 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego: <syntaxhighlight lang="lua"> return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); </syntaxhighlight> Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych. Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funkcji wspomniane poniżej, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i o numerze w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a to pierwsze jest uzyskane z dwóch poprzednich z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} danego typu z dwóch, wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w tym większym, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nqsxf5pku7adogz5k72tj1y7vmyca51 552727 552726 2026-08-21T16:15:40Z Persino 2851 /* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */ 552727 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego: <syntaxhighlight lang="lua"> return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); </syntaxhighlight> Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych. Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funkcji wspomniane poniżej, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i o numerze w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a to pierwsze jest uzyskane z dwóch poprzednich z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} danego typu z dwóch, wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w tym większym, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9pxkx8wah9kevvpemi9f15id04v327h 552732 552727 2026-08-21T16:21:34Z Persino 2851 /* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */ 552732 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego: <syntaxhighlight lang="lua"> return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); </syntaxhighlight> Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych. Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funkcji wspomniane poniżej, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i o numerze w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a to pierwsze jest uzyskane z dwóch poprzednich z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} danego typu z dwóch, wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w tym większym, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokomentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nktg8s2em2ncpqfoogr2d9wglqmvwxz 552733 552732 2026-08-21T16:22:16Z Persino 2851 /* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */ 552733 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego: <syntaxhighlight lang="lua"> return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); </syntaxhighlight> Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych. Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje pierwszego dozwolonego linku użyte w funkcji wspomniane poniżej, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i o numerze w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a to pierwsze jest uzyskane z dwóch poprzednich z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} danego typu z dwóch, wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w tym większym, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 655zbb3azro2x63270gzf7qyahltout 552734 552733 2026-08-21T16:49:36Z Persino 2851 /* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */ 552734 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzor}} - wzór dla tekstu, który przeszukujemy, * {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków, * {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek, * {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele, * {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}}, * {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje, * {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: * {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji, * {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji, * {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}}, * {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego: <syntaxhighlight lang="lua"> return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); </syntaxhighlight> Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych. Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a w też szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. Funkcja wyszukuje, od tyłu, pierwszego dozwolonego linku użyte w funkcji wspomniane poniżej, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i o numerze w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a to pierwsze jest uzyskane z dwóch poprzednich z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} danego typu z dwóch, wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w tym większym, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Opis parametrów zwracanych dokończające jego dokumentację: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne), * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6tp43cflcydy8gsbr6kbtr1b33vto2c Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V 4 63920 552695 552694 2026-08-21T12:08:04Z Persino 2851 /* {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} */ 552695 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, a nie nie, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycji list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy się tekst przed, która ta ostatnia wspomniana funkcja liczy. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposśób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwraacanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji ich nie szuka jednego rodzaju tylko, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}},pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ak7oxsx0xacme6lu449773y58qfnsu8 552696 552695 2026-08-21T12:12:25Z Persino 2851 /* {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} */ 552696 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, a nie nie, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycji list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy się tekst przed, która ta ostatnia wspomniana funkcja liczy. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposśób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwraacanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}},pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gggdiufcl4pozapvsx6ahcc644b6865 552697 552696 2026-08-21T12:19:57Z Persino 2851 /* {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} */ 552697 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, a nie nie, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami). Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposśób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}},pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> sp31wdxnatb1t8yei11fp9af3v9uc8h 552698 552697 2026-08-21T12:23:24Z Persino 2851 /* {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} */ 552698 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, a nie nie, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposśób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}},pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4l951omwnqn7fw9citwbl1g595kh2bx 552699 552698 2026-08-21T12:25:57Z Persino 2851 /* {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} */ 552699 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, a nie nie, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}},pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fepct3bqqe5k11r52jjae1tb8houqar 552700 552699 2026-08-21T12:35:58Z Persino 2851 /* {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} */ 552700 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, a nie nie, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}},pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9856btkhi5e3ko4drlwr3oa95ax6frl 552701 552700 2026-08-21T12:45:07Z Persino 2851 /* {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} */ 552701 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}},pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3z2sartvsw2p36xeirpjkuydl2567uu 552710 552701 2026-08-21T14:16:40Z Persino 2851 552710 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}},pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 39hchngyievfk206rxxz1e1reucyhbf 552719 552710 2026-08-21T15:01:42Z Persino 2851 /* {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} */ 552719 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> l7l1fooubzpexyt2wdl3wtrjpk4mx45 552735 552719 2026-08-21T16:51:12Z Persino 2851 /* {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} */ 552735 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jnp1emw2spo9e9lt8beoe8hi4z9vpoz 552736 552735 2026-08-21T16:51:50Z Persino 2851 /* {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} */ 552736 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bfdg99jn03g3k773lwy57ovu38pw7tw 552737 552736 2026-08-21T16:52:58Z Persino 2851 /* {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} */ 552737 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje, od tyłu, w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> krdtfh54yprlkwue56o8pnwjva9uwrd 552738 552737 2026-08-21T16:53:37Z Persino 2851 /* {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} */ 552738 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}}, * {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}: * {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy, * {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy. Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Zerowanie się pewnych wartości: Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach: * {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje, * {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, : Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, * {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są. Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać, * {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst, * {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie, * {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}, * {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}}, * {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: ; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}} * {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka, * {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka, * {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania, * {{Code|poziom_naglowka}} - poziom takiego nagłówka, ; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}} : Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: * {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku, * {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec, * {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu, * {{Code|poziom_naglowek_dalej}} - tutaj jego poziom. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do sprawdzenia. === Ciąg dalszy opisu funkcji === ; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu * Etap ogólny Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał. ; Etapy alternatywy * Pierwszy etap ** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. : Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych: Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. * Drugi ** To dotyczy, że takiego dopasowania pasującego nie znalazł. Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. * Trzeci ** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. ; Parametry wychodzące z funkcji{{dk}} * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: : Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> Wytłumaczenia parametrów zwracanych: ; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}} * {{Code|liczba_start_naglowek}} - początek tego dopasowania, * {{Code|liczba_koniec_naglowek}} - jego koniec, * {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka, * {{Code|poziom_naglowka}} - poziom tego nagłówka. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje parametry: ** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne, ** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego, ** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: * Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście), * Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}), * Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). Etapy zwracania przez funkcję elementów: ; Uzyskanie linii według ogólnego wzoru * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}} * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ; Brak dopasowania linii * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ; Rozdział równaniowy{{dk}} * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać. ; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}} : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. ; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}} : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą. ; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}} * Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. * Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}{{Code|p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} == Funkcja wyszukuje, od tyłu, w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki lub inne, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: * Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, * Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, * Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy: ** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa, ** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa. Parametry zwracane: * Pozycja, w którym taką pozycję określona przez funkcję znaleziono, * Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej. Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. Dla pierwszego kodu szablonu znalezionego w linii funkcja sprawdza tym: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, zwracająca wartości sugerujące, czy jest to jednak w ogóle artykuł, numer rodzaju artykułu, czy {{ZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} artykuł to okładka, albo może być to niedozwolona strona, jako część książki, ale nie może być traktowana jako jego treściwy artykuł. Jeżeli ten kod sugeruje dla uzyskanej zmiennej {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} (uzyskanej z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mając dwie wartości, tzn. {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod_szablon}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, która ta wartość jest zamieniana na liczbę), liczymy z tego {{ZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} zmienne artykularne ({{Code|czy_element_spisu}} {{Patrz|czy_element_spisu}}), numer rodzaju artykułu ({{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}}), i sprawdzamy, czy ona jest równa jeden, i czy nie jest {{LinkZobaczTeż|niedozwolona strona-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}} ({{Code|czy_okladka}} {{Patrz|czy_okladka}}), lub numer rodzaju artykułu {{LinkPatrz|numer_rodzaju_artykulu}} jest inny niż jeden, wtedy funkcja zwraca dwie po kolei wartości według źródła {{Patrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> Jeżeli takiej wartości nie znalazł, wtedy aby zwrócić cokolwiek, wtedy iterujemy po dalszym {{Code|dalszy_tekst}} iteratorem szablonowym z modułu: {{Code|{{m|Szablonowe}}}}, i w każdym okrążeniu pętli znajdujemy trzy wartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do którego wykorzystujemy funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}}, z którego uzyskujemy wartości i sprawdzamy warunek jak w punkcie: {{LinkZobaczTeż|zmienne artykularne-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, jeśli ten warunek jest spełniony, wtedy zostanie zwrócona wartość, jak w: {{LinkPatrz|poprawnie-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}. W innych przypadkach w funkcji zrzucany jest wynik mówiący, że takiego dopasowania nie znalazł {{Patrz|wartość spisowa-p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach}}, wtedy zrzucamy wynik, którego pierwsza wartość jest powtórzeniem parametru wsadzonego do naszej funkcji: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3zuwh9f2dbp588vwkm5j4tf7ijegdxn Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI 4 63921 552742 551583 2026-08-21T17:47:29Z Persino 2851 /* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */ 552742 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony, wśród tych znajdujemy ich nazwy, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemyjeko szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zzwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jeest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe: <syntaxhighlight lang="lua"> if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> k60k0c3fhpdtoe76hi82txoq169n5cs 552744 552742 2026-08-21T17:50:42Z Persino 2851 /* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */ 552744 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zzwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów: <syntaxhighlight lang="lua"> if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> m78th9s47rbz1jmmu1lsba6pxgh3n6a 552745 552744 2026-08-21T17:55:15Z Persino 2851 /* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */ 552745 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych typów szablonowych: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cirni5yiyuteihtftjiqt7urwy4f90n 552746 552745 2026-08-21T17:56:06Z Persino 2851 /* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */ 552746 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych typów szablonowych: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> raktww8otm17yaioalwtkfqf733lke2 552747 552746 2026-08-21T18:14:55Z Persino 2851 /* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */ 552747 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}} dla {{Code|SZABLOB}} i {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych typów szablonowych: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8yhq2end2t0gdmluo5zu709v57koy03 552748 552747 2026-08-21T18:15:33Z Persino 2851 /* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */ 552748 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}} dla {{Code|SZABLOB}} i {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych typów szablonowych: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pyzjwzpa749cpp58wt23tuws76cycf7 552749 552748 2026-08-21T18:16:58Z Persino 2851 /* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */ 552749 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych typów szablonowych: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1lp5vyzc5cfprd7yre7us3of9bjhsiy 552750 552749 2026-08-21T18:17:48Z Persino 2851 /* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */ 552750 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych typów szablonowych: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rrapn4nlulijp4ip1du1xhc897sz4m7 552751 552750 2026-08-21T18:19:28Z Persino 2851 /* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */ 552751 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> a6emipfwsjumgrky4bpki6qgbzyff1c 552754 552751 2026-08-21T19:26:34Z Persino 2851 552754 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funnkcja do korygowania spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, czyli: {{Code|tekst}} {{LinkPatrz|tekst}} jest korygowany przez tą funkcję elementów bibliografii (a te pierwsze tylko linki z bieżącej ksiązki są zostawiane, a dalsze są zostawiane) i literatury (a tutaj tak samo z pierwszymi, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów są zostawiane, a dalsze są usuwane, w przypadku bibliografii, a nie literatury, tak jest robione z tak wydzielonego spisu treści odpowiednimi metodami i krokami z podanego wydzielonego tekstu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składającxa się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki usuwać, w wydzielonym tekście, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz||tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5byhx2m6q3p8o87ps1v3sfap7gliyte 552755 552754 2026-08-21T19:26:48Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552755 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funnkcja do korygowania spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, czyli: {{Code|tekst}} {{LinkPatrz|tekst}} jest korygowany przez tą funkcję elementów bibliografii (a te pierwsze tylko linki z bieżącej ksiązki są zostawiane, a dalsze są zostawiane) i literatury (a tutaj tak samo z pierwszymi, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów są zostawiane, a dalsze są usuwane, w przypadku bibliografii, a nie literatury, tak jest robione z tak wydzielonego spisu treści odpowiednimi metodami i krokami z podanego wydzielonego tekstu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składającxa się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki usuwać, w wydzielonym tekście, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> kwmx1j5dsypkddyagg0m7jpuoaof44i 552757 552755 2026-08-21T19:27:56Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552757 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funnkcja do korygowania spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, czyli: {{Code|tekst}} {{LinkPatrz|tekst}} jest korygowany przez tą funkcję elementów bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są zostawiane) i literatury (a tutaj tak samo z pierwszymi, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów są zostawiane, a dalsze są usuwane, w przypadku bibliografii, a nie literatury, tak jest robione z tak wydzielonego spisu treści odpowiednimi metodami i krokami z podanego wydzielonego tekstu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składającxa się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki usuwać, w wydzielonym tekście, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> hj3he9xij8xbin94bpaj1aer0h31bq6 552758 552757 2026-08-21T19:31:58Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552758 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funnkcja do korygowania spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, czyli: {{Code|tekst}} {{LinkPatrz|tekst}} jest korygowany przez tą funkcję elementów bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku bibliografii, a nie literatury, tak jest robione z tak wydzielonego spisu treści odpowiednimi metodami i krokami z podanego wydzielonego tekstu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) niezostawiać, w wydzielonym tekście, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bexjln1n9thfgtwoiuyge2q83kh4ysa 552760 552758 2026-08-21T19:32:42Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552760 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funnkcja do korygowania spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, czyli: {{Code|tekst}} {{LinkPatrz|tekst}} jest korygowany przez tą funkcję elementów bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku bibliografii, a nie literatury, tak jest robione z tak wydzielonego spisu treści odpowiednimi metodami i krokami z podanego wydzielonego tekstu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) niezostawiać, w wydzielonym tekście, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2xxey9u8gdvq1b01bzyiqwyncgekon2 552761 552760 2026-08-21T19:34:24Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552761 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funnkcja do korygowania spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, czyli: {{Code|tekst}} {{LinkPatrz|tekst}} jest korygowany przez tą funkcję elementów bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku bibliografii, a nie literatury, tak jest robione z tak wydzielonego spisu treści odpowiednimi metodami i krokami z podanego wydzielonego tekstu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które mjuż nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> avdq9kqigcx72u2yoc7i2wcsgyn5zb7 552762 552761 2026-08-21T19:38:29Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552762 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funnkcja do korygowania spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, czyli: {{Code|tekst}} {{LinkPatrz|tekst}} jest korygowany przez tą funkcję elementów bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku bibliografii, a nie literatury, a dla tego ostatniego wszystkie szablony są usuwane, tak jest robione z tekstem {{LinkPatrz|tekst}}, który poza tą funkcją został wydzielonego ze spisu treści odpowiednimi metodami i krokami z podanego wydzielonego początkowego tekstu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które mjuż nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rifbn4b9nikw0udlhwsk956pu2lbs2n 552763 552762 2026-08-21T19:42:01Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552763 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, czyli: {{Code|tekst}} {{LinkPatrz|tekst}} jest korygowany przez tą funkcję elementy bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony są usuwane, tak jest robione z tekstem {{LinkPatrz|tekst}}, który poza tą funkcją został wydzielonego ze spisu treści odpowiednimi metodami i krokami z podanego wydzielonego początkowego tekstu wpomnianego na początku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lj3i0f9ay9fwm0ej4z2vspytbq55hog 552764 552763 2026-08-21T19:44:59Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552764 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, czyli: {{Code|tekst}} {{LinkPatrz|tekst}} jest korygowany przez tą funkcję elementy bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony są usuwane, tak jest robione z tekstem {{LinkPatrz|tekst}}, który poza tą funkcją został wydzielonego ze spisu treści odpowiednimi metodami i krokami z podanego wydzielonego początkowego tekstu wpomnianego na początku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy,` w jego definicji na stronie: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 73ivo7l21y619a8ft1v45wtdnbvhw7m 552765 552764 2026-08-21T19:46:39Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552765 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, czyli: {{Code|tekst}} {{LinkPatrz|tekst}} jest korygowany przez tą funkcję elementy bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony są usuwane, tak jest robione z tekstem {{LinkPatrz|tekst}}, który poza tą funkcją został wydzielonego ze spisu treści odpowiednimi metodami i krokami z podanego wydzielonego początkowego tekstu wpomnianego na początku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qc2zu2m10cdxbi4ron49ggwh3ourq9x 552766 552765 2026-08-21T19:48:05Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552766 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, czyli: {{Code|tekst}} {{LinkPatrz|tekst}} jest korygowany przez tą funkcję elementy bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony są usuwane, tak jest robione z tekstem {{LinkPatrz|tekst}}, który poza tą funkcją został wydzielonego ze spisu treści odpowiednimi metodami i krokami z podanego wydzielonego początkowego tekstu wpomnianego na początku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> tg42ckjsyoake1ypz5r0yv58acvsmt7 552767 552766 2026-08-21T19:52:03Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552767 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8cjh63zj9altedwemtjupifgjgyiiqq 552768 552767 2026-08-21T19:56:29Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552768 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> reqypvde9bjb9fxq7dyqqoc9qp4dnf1 552769 552768 2026-08-21T19:57:25Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552769 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością,a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gyyt8v88l9el4dw30us6bo6nacag3pf 552770 552769 2026-08-21T19:58:50Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552770 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3qi1y0cuiu8o1x3f8mh49h0o6x0bjln 552772 552770 2026-08-21T20:15:21Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552772 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wartość zwracana: * Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4nskbhizotfd8t0azkwj8wz8okqh6o4 552773 552772 2026-08-21T20:22:24Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552773 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wartość zwracana: * Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 53x2ic8xbdi4dh8beycetjrnp66a40j 552774 552773 2026-08-21T20:22:55Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552774 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wartość zwracana: * Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> mcr8wlhzm9gyppeyfayy07911mgl511 552775 552774 2026-08-21T20:24:03Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552775 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wartość zwracana: * Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ins3exiqn29aaa809cfm600zt0tcjq3 552776 552775 2026-08-21T20:25:09Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552776 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wartość zwracana: * Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1wbcpytf5kkml4nsd6gq8q4gvcc6h40 552778 552776 2026-08-22T03:37:45Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552778 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wartość zwracana: * Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> npoh6stqg1jo21lw7ks261cm7xasceu 552808 552778 2026-08-22T08:47:38Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552808 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w tej specjalnej funkcji wybierającej tylko jedne z tych rodzajów: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wartość zwracana: * Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego od pierwszej pozycji tego, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}. Jak znalazł początki tych nagłówków za pomocą tego pierwszego, jak nie znalazł to według drugiego sposobu, to szuka ich końców, jeżeli znalazł według tego pierwszego, to szuka końca według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł, to zerowe zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możeqmy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy. To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bz2fyk1m8chy8b0avdj4vuw93dwcx5f 552810 552808 2026-08-22T09:29:18Z Persino 2851 /* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */ 552810 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wartość zwracana: * Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego od pierwszej pozycji tego, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}. Jak znalazł początki tych nagłówków za pomocą tego pierwszego, jak nie znalazł to według drugiego sposobu, to szuka ich końców, jeżeli znalazł według tego pierwszego, to szuka końca według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł, to zerowe zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możeqmy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy. To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2rmy2d58o03x68ivc8xqjdjzxx4lz9m 552816 552810 2026-08-22T10:28:16Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552816 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wartość zwracana: * Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego od pierwszej pozycji tego, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}. Jak znalazł początki tych nagłówków za pomocą tego pierwszego, jak nie znalazł to według drugiego sposobu, to szuka ich końców, jeżeli znalazł według tego pierwszego, to szuka końca według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł, to zerowe zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możeqmy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy. To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję. W nagłówku Literatura funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są: * Szablonów przypisów: <syntaxhighlight lang="lua"> p.szablony_przypisowe={ ["Przypisy"]=true, ["Uwagi"]=true, ["Przypisy-lista"]=true, }; </syntaxhighlight> * Szablonów licencji: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5us3jqzxt7304ckh00i23152ybfnetv 552817 552816 2026-08-22T10:31:52Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552817 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wartość zwracana: * Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego od pierwszej pozycji tego, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}. Jak znalazł początki tych nagłówków za pomocą tego pierwszego, jak nie znalazł to według drugiego sposobu, to szuka ich końców, jeżeli znalazł według tego pierwszego, to szuka końca według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł, to zerowe zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możeqmy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy. To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję. W nagłówku Literatura funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są: * Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}: <syntaxhighlight lang="lua"> p.szablony_przypisowe={ ["Przypisy"]=true, ["Uwagi"]=true, ["Przypisy-lista"]=true, }; </syntaxhighlight> * Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{s|Licencja}}: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> kgkjo04xowo29l8k0i0alari4ega0ht 552818 552817 2026-08-22T10:32:57Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552818 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wartość zwracana: * Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego od pierwszej pozycji tego, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}. Jak znalazł początki tych nagłówków za pomocą tego pierwszego, jak nie znalazł to według drugiego sposobu, to szuka ich końców, jeżeli znalazł według tego pierwszego, to szuka końca według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł, to zerowe zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możeqmy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy. To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję. W nagłówku Literatura funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są: * Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}: <syntaxhighlight lang="lua"> p.szablony_przypisowe={ ["Przypisy"]=true, ["Uwagi"]=true, ["Przypisy-lista"]=true, }; </syntaxhighlight> * Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{m|Licencja}}: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5qiqfnzcc3x9xypemonlwjsnabedvn5 552819 552818 2026-08-22T10:34:01Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 552819 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wartość zwracana: * Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy. Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego od pierwszej pozycji tego, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}. Jak znalazł początki tych nagłówków za pomocą tego pierwszego, jak nie znalazł to według drugiego sposobu, to szuka ich końców, jeżeli znalazł według tego pierwszego, to szuka końca według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł, to zerowe zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możeqmy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy. To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję. W nagłówku '''Bibliografia''' funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są: * Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}: <syntaxhighlight lang="lua"> p.szablony_przypisowe={ ["Przypisy"]=true, ["Uwagi"]=true, ["Przypisy-lista"]=true, }; </syntaxhighlight> * Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{m|Licencja}}: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> kfwno1v4ajl2uasycmfqzzbn3iiyt8m Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII 4 63922 552815 551584 2026-08-22T10:23:43Z Persino 2851 /* {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} */ 552815 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> c5pf79qzi4vbh65skum6p2jztoy5b6a 552820 552815 2026-08-22T10:36:53Z Persino 2851 /* {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} */ 552820 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). === Ciąg dalszy opisu funkcji === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> p0vspstdi0pn5m0u5d7bhf5zx3gak83 552821 552820 2026-08-22T10:48:46Z Persino 2851 /* Parametry funkcji */ 552821 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnigowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). === Ciąg dalszy opisu funkcji === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> m4kjfvk8s33fv794ktwx9y63f9691y9 552822 552821 2026-08-22T10:52:17Z Persino 2851 /* Parametry zwracane */ 552822 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnigowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artylułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i zkorygowanego spisu treści; return tekst; </syntaxhighlight> === Ciąg dalszy opisu funkcji === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bom8g5xiwcfs4ewp1eov91zdcawmwqk 552823 552822 2026-08-22T10:53:55Z Persino 2851 /* Parametry zwracane */ 552823 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnigowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i zkorygowanego spisu treści; return tekst; </syntaxhighlight> === Ciąg dalszy opisu funkcji === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> kwg3nyzzjmf2b2hae06trg6d2uqw3wk 552824 552823 2026-08-22T11:11:58Z Persino 2851 /* Parametry zwracane */ 552824 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnigowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Ciąg dalszy opisu funkcji === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> iz78k4cdu2mabvels796atqtywj0qfh 552825 552824 2026-08-22T11:14:19Z Persino 2851 /* Parametry funkcji */ 552825 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Ciąg dalszy opisu funkcji === {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> k1i2b5ubmn058122aq82aes921dfmr2 552826 552825 2026-08-22T11:21:21Z Persino 2851 /* Ciąg dalszy opisu funkcji */ 552826 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. ==== Punkt startowy ==== ==== Punkt końcowy ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 66pk40kibx7p8rzv5fk9o7yaozgkp0s 552827 552826 2026-08-22T11:22:14Z Persino 2851 /* Wydzielanie właściwego spisu treści, liczenie punktów granicznych */ 552827 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== ==== Punkt końcowy ==== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> l4mlycdhts3m0q7h6yzy114u34r8gr0 552828 552827 2026-08-22T11:24:45Z Persino 2851 /* Wydzielanie właściwego spisu treści, liczenie punktów granicznych */ 552828 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== ==== Punkt końcowy ==== ===== Korekcja tej liczby o pozycje szablonu licencji: {{s|Licencja}} ===== ==== Wydzielanie spisu właściwego ==== ===== Korekcja uzyskanego wyniku ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dkkudmgm8xpus9wmin7ht21oi7c0iw4 552829 552828 2026-08-22T11:25:18Z Persino 2851 /* Korekcja tej liczby o pozycje szablonu licencji: {{s|Licencja}} */ 552829 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== ==== Punkt końcowy ==== ===== Korekcja tej liczby o pozycje szablonu licencji: {{nobold|{{s|Licencja}}}} ===== ==== Wydzielanie spisu właściwego ==== ===== Korekcja uzyskanego wyniku ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> p5dliesaec03173fe9jhdf4a0wabzzt 552830 552829 2026-08-22T11:32:42Z Persino 2851 /* Punkt startowy */ 552830 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== ===== Znajdowanie pierwszego artykułu książki ===== ===== Wyzukiwanie spisu treści ===== ===== W razie nie wyszukania spisu treści, lub korygowanie wyniku, o znajdowanie poprzednich w spisie rozdziałów ===== ===== Szukanie pozycji linkowych przed rozdziałowych ===== ==== Punkt końcowy ==== ===== Korekcja tej liczby o pozycje szablonu licencji: {{nobold|{{s|Licencja}}}} ===== ==== Wydzielanie spisu właściwego ==== ===== Korekcja uzyskanego wyniku ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> flj1i62kca26z85glhimwqt4r0368yy 552831 552830 2026-08-22T11:34:11Z Persino 2851 /* Punkt startowy */ 552831 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję. ===== Znajdowanie pierwszego artykułu książki ===== ===== Wyzukiwanie spisu treści ===== ===== W razie nie wyszukania spisu treści, lub korygowanie wyniku, o znajdowanie poprzednich w spisie rozdziałów ===== ===== Szukanie pozycji linkowych przed rozdziałowych ===== ==== Punkt końcowy ==== ===== Korekcja tej liczby o pozycje szablonu licencji: {{nobold|{{s|Licencja}}}} ===== ==== Wydzielanie spisu właściwego ==== ===== Korekcja uzyskanego wyniku ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5i0116222n621mgktui7nafl0gzk8cc 552832 552831 2026-08-22T11:37:34Z Persino 2851 /* Punkt końcowy */ 552832 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję. ===== Znajdowanie pierwszego artykułu książki ===== ===== Wyzukiwanie spisu treści ===== ===== W razie nie wyszukania spisu treści, lub korygowanie wyniku, o znajdowanie poprzednich w spisie rozdziałów ===== ===== Szukanie pozycji linkowych przed rozdziałowych ===== ==== Punkt końcowy ==== ===== Korygowanie tej liczby o pozycję szablonu licencji: {{nobold|{{s|Licencja}}}} ===== ==== Wydzielanie spisu właściwego ==== ===== Korekcja uzyskanego wyniku ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lm11qf8o9nuy33zuzv6m50dykyiv8e5 Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy 4 63923 552711 552502 2026-08-21T14:28:24Z Persino 2851 552711 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis tresci''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8c16ey9kwyfp8p8et9np9m28cu5vzr7 552712 552711 2026-08-21T14:29:31Z Persino 2851 552712 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 690cg0rhpxhu49d9dk9320a944jpb7j 552804 552712 2026-08-22T08:07:23Z Persino 2851 /* Spis treści */ 552804 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI - są do korygowania wydzielonego spisu treści, co do nazpisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nm5lzpol6qnf5lisx5q6vk8402w66oo 552805 552804 2026-08-22T08:07:39Z Persino 2851 /* Spis treści */ 552805 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania wydzielonego spisu treści, co do nazpisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pkm66cxof4rclmxoba21dyb9woq1ptc 552806 552805 2026-08-22T08:08:07Z Persino 2851 /* Spis treści */ 552806 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania wydzielonego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nbspfarziozkt8v7am4wg9gqb0jj3cl 552807 552806 2026-08-22T08:22:11Z Persino 2851 /* Spis treści */ 552807 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qtkrwgi1rhqm2cwx9nro307633k4gfb Śpiewnik/Zgoda Sejmu to sprawiła/Tekst 0 63950 552771 551930 2026-08-21T20:05:41Z Ashaio 4702 /* Tekst z 1892 */ 552771 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaTekst}} == Tekst z 1885 == '''Autor:''' nieznany (Franciszek D. Kniaźnin?) '''Opracowanie:''' Leon Kociałkowski (1850–1923) {{Kolumny|2| <poem> 1. Zgoda Sejmu to sprawiła, Że nam wolność przywróciła. Wiwat! Krzyczcie wszystkie stany: Niechaj żyje Król kochany! 2. Taka jest narodu wola: Za swych braci i za Króla Obywatel każdy wszędzie Życie swoje łożyć będzie. 3. Nuż w żupany, nuż w kontusze, Bo chcąc dobrym być rodadkiem, Nie dość jest mieć polską duszę, Lecz się trzeba rozstać z frakiem. 4. Obcych krajów precz zwyczaje, Fraki precz na tychże czele, Wąs na twarzy niech zostaje, Bierzmy pasy, karabele. 5. Nuż w kotusze, nuż w żupany, Obcym strojem wzgardź rodaku; Ten co gromił Bisurmany Nie wystąpił w Wiedniu w fraku. 6. Niechaj się kto chce obrusza, Niech się śmieje z méj figury, Młodszy fraczek od kontusza, Starsze wąsy od fryzury. </poem> }} '''Źródło:''' Leon Kociałkowski, ''[https://polona.pl/item-view/a88f7ab4-6c86-43d9-af42-24042b773dcf?page=66 Lutnia polska : zbiór pieśni i piosenek obyczajowych i okolicznościowych : miłosnych, aryi i dumek, piosenek wiejskich : mazurów, krakowiaków, kujawiaków, obertasów, piosenek dla rzemieślników, weselnych : i różnej innej treści z melodyami. Tomik 3]''. Poznań, 1885. S.&nbsp;67–68. == Tekst z 1892 == '''Autor:''' nieznany {{Kolumny|2| <poem> 1. Polskie nosili odzienie Sławniejsze od nas naddziay. Czemuż proszę uniżenie Nie wstępujemy w ich ślady? 2. Nasz Stefan Batory wielki, Gromiąc moskiewskie bojary, Nie używał kamizelki Lecz kontusze i czamary. 3. W żupany znowu, w żupany Przebieraj się, cny Polaku; Ten, co gromił Bisurmany Nie wjeżdżał do Wiednia w fraku! 4. W kontusze, bracia, w kontusze! Bo chcąc być dobrym Polakiem, Nie dosyć mieć polską duszę, Potrzeba się rozstać z frakiem. 5. Odtąd wdziejmy strój nasz własny, Jak obrońca WIednia król Jan. Nie szeroki frak lub ciasny, Lecz wylotny kontusz, żupan. 6. Wyście temu Panie winne Żeśmy fraczki pokochali – Okażcie swe chęci inne, My się będziem przebierali. 7. Wy dzieciom waszym, Sarmatki, Zachwalajcie strój Polaka; Ci przejmą radę od matki I powezmą wstręt do fraka. </poem> }} '''Źródło:''' ''[https://polona.pl/item-view/eb7456ed-0450-4e31-b8a2-9ea67c381e23?page=108 Pieśni polskie]''. Kraków, 1892. S.&nbsp;105. d8ntlmmq8qal27byocxln60lra05bfq Wikipedysta:Persino/brudnopis13 2 63962 552705 2026-08-21T13:25:40Z Persino 2851 Utworzono nową stronę „Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie. '''Zawartość:''' * [[/Ogólna teoria względności/]] : wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]] * [[/Fala grawitacyjna/]] * [[/Energia, pęd i moment pędu pola elektromagnetycznego/]] '''Inne podręczniki:''' <br /> > [[Fizyka teoretyczna]] <br /> > [[Wstęp do fizyki atomu]] <br /> > …” 552705 wikitext text/x-wiki Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie. '''Zawartość:''' * [[/Ogólna teoria względności/]] : wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]] * [[/Fala grawitacyjna/]] * [[/Energia, pęd i moment pędu pola elektromagnetycznego/]] '''Inne podręczniki:''' <br /> > [[Fizyka teoretyczna]] <br /> > [[Wstęp do fizyki atomu]] <br /> > [[Elektrodynamika klasyczna]] <br /> > [[Wprowadzenie do fizyki kwantowej]] <br /> > [[Mechanika kwantowa]] <br /> 41feujufxig0uc2aa1fz4ix8295jrz4 Śpiewnik/Hej, tam pod lasem 0 63963 552777 2026-08-21T20:43:37Z Ashaio 4702 nowa piosenka 552777 wikitext text/x-wiki {{T|Śpiewnik/NawigacjaOpis}} == Muzyka == '''Autor:''' nieznany '''Opracowanie:''' Bogusław Szul-Skjöldkrona <score raw="1" vorbis="1"> \version "2.19.0" \header { title = "Hej, tam pod lasem" poet = "Słowa: autor nieznany" composer = "Muzyka: autor nieznany" arranger = "Opracowanie: Boguław Szul Skjoldkrona" tagline = "" } melodia = { \new Staff \with { midiInstrument = "accordion" }{ \clef treble \key d \major \time 3/8 \tempo "Moderato" % \tempo 4 = 110 \new Voice \relative a'{ \autoBeamOff \stemUp a8 a8. b16 | a4 fis8 | a8 a8. b16 | g4 e8 | g8 g8. a16 | g8 e4 | a8 cis8. b16 | b8 a4 | \repeat volta 2 { fis8 fis fis | a8 a a | g8 g g | } \alternative{ { fis d' a} { fis8 r r } } \bar "|." } } \addlyrics{ \small { Hej, tam pod la -- sem cóż bły -- szczy z_da -- la, ban -- da Cy -- ga -- nów o -- gnie roz -- pa -- la. Bum tra -- li Bum tra -- li Bum trali trali Bum ha ha Benc. } } } \score{ \melodia \layout{} } \score{ \unfoldRepeats \melodia \midi{ \tempo 4 = 110 } } </score> '''Źródło:''' Na podstawie: Bogusław Szul-Skjöldkrona, ''[https://polona.pl/item-view/371e734c-5829-424c-89f5-cc2e04cf5a72?page=168 Piosenki Leguna tułacza]''. Warszawa, [post 1918]. S. &nbsp;161 (pieśń 26). == Tekst == '''Autor:''' nieznany Opracowanie: Związek Młodych Polek (?) {{Kolumny|3| <poem> 1. Hej, tam pod lasem Cóż błyszczy z dala? Banda Cyganów Ognie rozpala. ::Bum trali bum trali, ::Bum trali trali bum ha ha, ::Bum trali trali bum trali ha, ::Bum trali trali benc. 2. Nie kochaj dziewczę Kmiecia ni pana, Lecz całem sercem Kochaj Cygana! ::Bum trali bum trali, ::Bum trali trali bum ha ha, ::Bum trali trali bum trali ha, ::Bum trali trali benc. 3. Cygan bez roli, Cygan bez chaty, Cygan szczęśliwy, Cygan bogaty. ::Bum trali bum trali, ::Bum trali trali bum ha ha, ::Bum trali trali bum trali ha, ::Bum trali trali benc. </poem> }} '''Źródło:''' Związek Młodych Polek, ''[https://polona.pl/item-view/d1a739c2-178f-49a1-bf49-4f76f10ca8f5?page=33 Nasz śpiewnik : pieśni dla młodzieży]''. Poznań, [1928]. S.&nbsp;28. == Zobacz też == * ''[https://bibliotekapiosenki.pl/utwory/Hej_tam_pod_lasem_(Hej_tam_pod_lasem_cos_blyszczy_z_dala_) Hej tam pod lasem (Hej tam pod lasem coś błysczy z dala)]'' w serwisie ''[https://bibliotekapiosenki.pl/ Cyfrowa Biblioteka Polskiej Piosenki]'' * ''[https://staremelodie.pl/piosenka/5184/Hej_tam_pod_lasem Hej tam pod lasem]'' w serwisie ''[https://staremelodie.pl/ Stare Melodie]'' 256ofyptaep92hkbp9lju8ouh2yco5f Moduł:StronicowyParser/Pomocne 828 63964 552795 2026-08-22T07:34:34Z Persino 2851 Utworzono nową stronę „local p={}; p["SkrótDoNumeruOdnośnika"]=function(nazwa_bazowa_strony,nazwa_modulu) local techniczne_modul=require("Module:Techniczne"); nazwa_bazowa_strony=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_bazowa_strony); nazwa_bazowa_strony=mw.ustring.gsub(nazwa_modulu,"^"..nazwa_bazowa_strony.."/",""); local zrostek; local ksiazka,podstrona,artykul=mw.ustring.match(nazwa_bazowa_strony,"^([^/]*)/(.*)/([^/]*)$"); if(ksiazka and podstrona and…” 552795 Scribunto text/plain local p={}; p["SkrótDoNumeruOdnośnika"]=function(nazwa_bazowa_strony,nazwa_modulu) local techniczne_modul=require("Module:Techniczne"); nazwa_bazowa_strony=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_bazowa_strony); nazwa_bazowa_strony=mw.ustring.gsub(nazwa_modulu,"^"..nazwa_bazowa_strony.."/",""); local zrostek; local ksiazka,podstrona,artykul=mw.ustring.match(nazwa_bazowa_strony,"^([^/]*)/(.*)/([^/]*)$"); if(ksiazka and podstrona and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); podstrona=mw.ustring.gsub(podstrona,"([%u%l])[^/]*/?",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..podstrona..artykul; else local ksiazka,artykul=mw.ustring.match(nazwa_bazowa_strony,"^([^/]*)/([^/]*)$"); if(ksiazka and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..artykul; else zrostek=mw.ustring.gsub(nazwa_bazowa_strony,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); end; end; return zrostek; end; return p; 13wcljliv7njg5uibdj9nw3ue4fl4xp 552797 552795 2026-08-22T07:39:06Z Persino 2851 Zabezpieczono stronę „[[Moduł:StronicowyParser/Pomocne]]” ([Edytowanie=Dozwolone tylko dla administratorów] (na czas nieokreślony) [Przenoszenie=Dozwolone tylko dla administratorów] (na czas nieokreślony)) 552795 Scribunto text/plain local p={}; p["SkrótDoNumeruOdnośnika"]=function(nazwa_bazowa_strony,nazwa_modulu) local techniczne_modul=require("Module:Techniczne"); nazwa_bazowa_strony=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_bazowa_strony); nazwa_bazowa_strony=mw.ustring.gsub(nazwa_modulu,"^"..nazwa_bazowa_strony.."/",""); local zrostek; local ksiazka,podstrona,artykul=mw.ustring.match(nazwa_bazowa_strony,"^([^/]*)/(.*)/([^/]*)$"); if(ksiazka and podstrona and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); podstrona=mw.ustring.gsub(podstrona,"([%u%l])[^/]*/?",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..podstrona..artykul; else local ksiazka,artykul=mw.ustring.match(nazwa_bazowa_strony,"^([^/]*)/([^/]*)$"); if(ksiazka and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..artykul; else zrostek=mw.ustring.gsub(nazwa_bazowa_strony,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); end; end; return zrostek; end; return p; 13wcljliv7njg5uibdj9nw3ue4fl4xp 552812 552797 2026-08-22T09:48:31Z Persino 2851 552812 Scribunto text/plain local p={}; p["SkrótDoNumeruOdnośnika"]=function(nazwa_bazowa_strony,nazwa_modulu) local techniczne_modul=require("Module:Techniczne"); nazwa_bazowa_strony=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_bazowa_strony); nazwa_bazowa_strony=mw.ustring.gsub(nazwa_modulu,"^"..nazwa_bazowa_strony.."/",""); local zrostek; local ksiazka,podstrona,artykul=mw.ustring.match(nazwa_bazowa_strony,"^([^/]*)/(.*)/([^/]*)$"); if(ksiazka and podstrona and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); podstrona=mw.ustring.gsub(podstrona,"([%u%l])[^/]*/?",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..podstrona..artykul; else local ksiazka,artykul=mw.ustring.match(nazwa_bazowa_strony,"^([^/]*)/([^/]*)$"); if(ksiazka and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..artykul; else zrostek=mw.ustring.gsub(nazwa_bazowa_strony,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); end; end; return zrostek; end; p["SkrótDoNumeruOdnośnikaDołączonejKsiążki"]=function(nazwa_ksiazki) local ksiazka=mw.ustring.gsub(nazwa_ksiazki,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); return ksiazka; end; return p; o4w6fauowkhc9otbbm5ne4ijrqcd3qk Wikibooks:Moduły/StronicowyParser/Pomocne 4 63965 552803 2026-08-22T08:03:46Z Persino 2851 Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Pomocne}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude>” 552803 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Pomocne}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> tj2l132kun3zjr2nm0s74rwmh8mapaj