Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.11 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 Moduł:StronicowyParser/NumerLubNazwaArtykułówKsiążek 828 58936 547826 547761 2026-07-20T03:07:51Z Persino 2851 547826 Scribunto text/plain local p={}; local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame); stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki); local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki); if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end; local args=stronicowyparser_potrzebne_modul:Args(frame); local parametry_modul=require("Module:Parametry"); local szablonowe_modul=require("Module:Szablonowe"); local naglowek=parametry_modul.CzyTak(args["nagłówek"]); local nie_wszystkie=parametry_modul.CzyTak(args["nie wszystkie"]); ---- local dane=tonumber(args["dane"]); if((not dane)or((dane~=1)and(dane~=2)and(dane~=3)))then dane=1;end; ---- local artykul_spisu=args["spis"]; artykul_spisu=artykul_spisu and parametry_modul["Odstępy"]{[1]=artykul_spisu,[2]="tak",} or nil; local tab_artykul=(not naglowek)and {} or nil; local poziomowo=parametry_modul.CzyTak(args["poziomowo"]); local tab_poziomowo={}; local tab_poziomowo_1={}; local tab_poziomowo_2={}; local html_modul=require("Module:Html"); ---- local function ParametrySzablonuPobierania() if(not zbieraj_dane_wszystkie)then local pierwszy_parametr_szablonu=nil;local czy_nazwa=nil; if(not typ)then pierwszy_parametr_szablonu=args[1] and ((not naglowek) and mw.ustring.gsub(html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](args[1]),true),"^([^#]*)#(.*)$","%1") or html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](args[1]),true)) or "Przykładowy artykuł"; else pierwszy_parametr_szablonu=args[1] and ((not poziomowo) and (tonumber(args[1]) or 1) or args[1]) or ((not poziomowo) and 1 or "1"); czy_nazwa=parametry_modul.CzyTak(args["nazwa"]); end; return function() return {pierwszy_parametr_szablonu,czy_nazwa,dane,}; end; end; end; local pierwszy_parametr_szablonu=ParametrySzablonuPobierania(); ---- local ktory=(tonumber(args["który"]) or 1); local i=(not poziomowo) and 1 or nil; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu; local tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu); local odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu); setmetatable(tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); setmetatable(tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); local HNumerPoziomow_4=nil; local HNumerPoziomow_3=nil local HNumerPoziomow_2=nil; local HNumerPoziomow_1=nil; local HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local HNumerPoziomowNaglowkow_1=nil; local HNumerPoziomowNaglowkow_2=nil; local tab_numer=poziomowo and {} or nil; local tab_numer_baza_spis_tresci=nil; local tab_numer_3=nil local tab_numer_4=nil;--poziomowo and {} or nil; local spis=false; local pierwszy_dodatni_naglowek=nil; local pierwszy_ujemny_naglowek=nil; local poprzedni_poziom_znakowy_rozdzialu=nil; local poprzedni_tab_poziomowo=nil; local poziom_pierwszego_dodatniego_naglowka=0; local poziom_pierwszego_ujemnego_naglowka=0; local poziom_zerowego_naglowka=0; local poziom_srednikowego_naglowka=0; local ostatni_rozdzial_dodatni=nil; local ostatni_rozdzial_centrowany=nil; local pierwszy_rozdzial_dodatni=nil; local glowny_dodatni_rozdzial=nil; local glowny_ujemny_rozdzial=nil; local spis_tresci=nil; local poziom_pierwszego_ujemnego_spisu_tresci=nil; local ostatni_poczatek_artykulu=nil; local pierwszy_rowny_rozdzial=nil; local rozdzial; local czy_pierwszy_nilowy=nil; local czy_nienilowy_rozdzial=nil; local czy_pierwszy_nilowy_rozdzial=nil; local czy_ostatni_rozdzial_jest_centrowany=nil; local glowny_spis_tresci_lub_rozdzial_ksiazki=nil; local poprz_poziom_rozdzialu_lub_artykulu=nil; local poprz_numeracji_rozdzialu_lub_artykulu=nil; local poprz_numer_rozdzialu_lub_artykulu=nil; local poprz_czysty_poziom_rozdzialu_lub_artykulu=nil; local poprz_ujemnego_rozdzialu_dodatniego_rozdzialu=nil; local staly_dodatek_rozdzialu=0; ---- local poziom_spisu_tresci_dodatek=nil; ---- local odejmnij_od_dwukropka=0; ----- local czy_w_trakcie_dwukropkowania=nil; ----- local numer_poprz=nil; ---- local tab_lista_artykulow_w_ksiazce2=tab_lista_artykulow_w_ksiazce; tab_lista_artykulow_w_ksiazce={}; local function TabLista(tab_lista) local max_ile=0; for name,value in pairs(tab_lista)do max_ile=math.max(max_ile,name); end; local function Iterator(tab_lista) local p2=0; local s=0; local pp=0; local function InneTablica(numer) local p1=0; return function() if((tab_lista[numer])and(tab_lista[numer][p1+1])and(tab_lista[numer][p1+1][6]==pp))then p1=p1+1; pp=pp+1; return s,tab_lista[numer][p1]; end; end; end; local function WszystkieInneTablica() local tab={}; for i=1,max_ile-2,1 do tab[i]=InneTablica(i+2); end; return function() for i=1,max_ile-2,1 do local wartosc,tab_artykul=tab[i](); if((wartosc)and(tab_artykul))then return wartosc,tab_artykul; end; end; end; end; --local p1=0; --local p2=0; --local s=0; local iter_inne_tablice=WszystkieInneTablica(); return function() s=s+1; local wartosc,tab_artykul=iter_inne_tablice(); if((wartosc)and(tab_artykul))then return wartosc,tab_artykul; elseif((tab_lista[2])and(tab_lista[2][p2+1]))then p2=p2+1; pp=pp+1; return s,tab_lista[2][p2]; else return nil; end; end; end; local tab={}; local iter=Iterator(tab_lista); for s,artykul_w_bazie in iter do tab[s]=artykul_w_bazie; end; return tab; end; for s,tab_lista in ipairs( tab_lista_artykulow_w_ksiazce2)do if(not tab_lista_artykulow_w_ksiazce[s])then tab_lista_artykulow_w_ksiazce[s]={};end; tab_lista_artykulow_w_ksiazce[s][1]=tab_lista[1]; tab_lista_artykulow_w_ksiazce[s][2]=TabLista(tab_lista); end; ---- local function ToNumberPoziomArtykulu(poziom_artykulu) local numer_artykulu=tonumber(poziom_artykulu); local numer_dodatkowy=((numer_artykulu)and(numer_artykulu>0)) and 0 or 1; return (numer_artykulu or 0),numer_dodatkowy; end; local function ZerowyArtykul(tab_lista_2,p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka,poziom_zerowego_artykulu_poprz) if((not w_rozdziale) and(poziom_zerowego_artykulu>0) and(poziom_zerowego_naglowka>0))then if(p>1)then local czy_jest_nast=tab_lista_2[p-1]; if(czy_jest_nast)then local numer=tonumber(tab_lista_2[p-1][2][1]); if(numer>0)then poziom_zerowego_artykulu=0; end; else poziom_zerowego_artykulu=0; end; end; elseif(poziom_zerowego_artykulu==0)then poziom_zerowego_artykulu=poziom_zerowego_artykulu_poprz; end; return poziom_zerowego_artykulu; end; local function OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka) if((not czy_w_trakcie_dwukropkowania)and(mw.ustring.match(poziom_poczatku_artykulu,"^:")))then odejmnij_od_dwukropka=math.max((#poziom_poczatku_artykulu-(numer_poprz or 0)-1),0); czy_w_trakcie_dwukropkowania=true; elseif((czy_w_trakcie_dwukropkowania)and(not mw.ustring.match(poziom_poczatku_artykulu,"^:")))then odejmnij_od_dwukropka=0; czy_w_trakcie_dwukropkowania=nil; end; if(odejmnij_od_dwukropka>0)then poziom_artykulu=poziom_artykulu-odejmnij_od_dwukropka; if(poziom_artykulu<1)then poziom_artykulu=1; end; end; return poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania; end; local function PoziomNumeracji(numeracja_artykulu) if(numeracja_artykulu)then numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"^%s*%.*(.-)%.*%s*$","%1"); numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"%s+",""); numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"%.+","."); local tab_numeracja_artykulu=numeracja_artykulu and mw.text.split(numeracja_artykulu,"%s*%.%s*",false); local poziom_numeracji_artykulu=((numeracja_artykulu~="") and (#tab_numeracja_artykulu) or 0); return poziom_numeracji_artykulu; end; return 0; end; ----- local function UzyskajArtykul(artykul,pomin_link) local artykul=(not naglowek)and stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul,pomin_link) or stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(artykul,true,pomin_link); return artykul; end; ---- local nazwa_spisu=nil;local numer_spisu=nil; local prawdziwy_poziom_rozdzialu_poprz=nil; for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do local poziom_rozdzialu; local poziom_poczatku_rozdzialu=nil; local poziom_znakowy_rozdzialu=nil; local prawdziwy_poziom_rozdzialu=nil; local poziom_naglowka=nil; local poziom_naglowka_bez_poprawki=nil; local numer_rozdzialu=nil; local tab_numer_zapasowe=nil; local poziom_numeracji_rozdzialu=nil; local czy_jest_teraz_spis_tresci=nil; local czy_rozdzial_centrowany=nil; ----- local zbieraj_dane=true; ----- czy_nienilowy_rozdzial=tab_lista[1][2][1]; poziom_rozdzialu=czy_nienilowy_rozdzial or 0; ---- rozdzial=tab_lista[1][1]; ---- local czy_rozdzial_spisu=false; if((m==1)and(not numer_spisu)and(not nazwa_spisu))then if(czy_nienilowy_rozdzial==nil)then local spis=tab_lista[1]["spis"]; if(spis)then nazwa_spisu=spis[1]; numer_spisu=spis[2]; czy_rozdzial_spisu=true; pierwszy_dodatni_naglowek=false; pierwszy_ujemny_naglowek=false; glowny_spis_tresci_lub_rozdzial_ksiazki=false; end; end; elseif((m>2)and(numer_spisu)and(nazwa_spisu))then if(poziom_rozdzialu==1)then local spis=tab_lista[1]["spis"]; if(spis)then nazwa_spisu=spis[1]; numer_spisu=spis[2]; czy_rozdzial_spisu=true; pierwszy_dodatni_naglowek=false; pierwszy_ujemny_naglowek=false; glowny_spis_tresci_lub_rozdzial_ksiazki=false; end; end; end; ----- local function PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu) if(not poprz_czysty_poziom_rozdzialu_lub_artykulu)then staly_dodatek_rozdzialu={poziom_numeracji_rozdzialu,}; return poziom_naglowka,staly_dodatek_rozdzialu; end; if(poziom_naglowka==poprz_czysty_poziom_rozdzialu_lub_artykulu)then local poziom_numeracji=poziom_numeracji_rozdzialu-(staly_dodatek_rozdzialu[1] or 0); return poziom_naglowka+((poziom_numeracji>=0)and poziom_numeracji or 0),staly_dodatek_rozdzialu; elseif(poziom_naglowka~=poprz_czysty_poziom_rozdzialu_lub_artykulu)then staly_dodatek_rozdzialu={poziom_numeracji_rozdzialu,}; return poziom_naglowka,staly_dodatek_rozdzialu; end; end; local function PoziomNumerNaglowkaStalyDodatekRozdzialu(staly_dodatek_rozdzialu,poziom_naglowka,poprz_czysty_poziom_rozdzialu_lub_artykulu) if(parametry_modul.TypeTable(staly_dodatek_rozdzialu))then return 0; elseif(poziom_naglowka>poprz_czysty_poziom_rozdzialu_lub_artykulu)then local dodatek=(parametry_modul.TypeTable(staly_dodatek_rozdzialu) and staly_dodatek_rozdzialu[2] or 0); return dodatek; elseif(poziom_naglowka<poprz_czysty_poziom_rozdzialu_lub_artykulu)then local dodatek=(parametry_modul.TypeTable(staly_dodatek_rozdzialu) and staly_dodatek_rozdzialu[1] or 0); return dodatek; end; end; local function PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,poziom_rozdzialu,poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami) local function JedenDwa(poziom_poczatku_rozdzialu,poziom_poczatku_artykulu) return ((poziom_poczatku_artykulu)and(poziom_poczatku_rozdzialu) and(((mw.ustring.match(poziom_poczatku_rozdzialu,"^*")) and((mw.ustring.match(poziom_poczatku_artykulu,"^:")) or(mw.ustring.match(poziom_poczatku_artykulu,"^#")) ) )or((mw.ustring.match(poziom_poczatku_rozdzialu,"^#"))and(mw.ustring.match(poziom_poczatku_artykulu,"^:"))))); end; if(JedenDwa(poziom_poczatku_rozdzialu,poziom_poczatku_artykulu))then local roznica=poziom_rozdzialu-poziom_artykulu; if(roznica>=0)then staly_poziom_rozdzialu_z_artykulami=roznica+1; else staly_poziom_rozdzialu_z_artykulami=0; end; return (poziom_artykulu+staly_poziom_rozdzialu_z_artykulami),staly_poziom_rozdzialu_z_artykulami; elseif(JedenDwa(poziom_poczatku_artykulu,poziom_poczatku_rozdzialu))then staly_poziom_rozdzialu_z_artykulami=0; elseif(#poziom_poczatku_artykulu==0)then staly_poziom_rozdzialu_z_artykulami=0; end; return (poziom_artykulu+(staly_poziom_rozdzialu_z_artykulami or 0)),staly_poziom_rozdzialu_z_artykulami; end; local function CzyWliczacBezPoziomowo(p,i) if(naglowek)then return true;end; local tab=tab_lista[2]; if(not tab)then return false;end; if(p==i)then return true;end; local tab_artykul2={}; for k=p+1,i,1 do ----- local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab[k][1]); local artykul=czy_table_baza_artykulu and tab[k][1][1] or tab[k][1]; artykul=UzyskajArtykul(artykul); ----- if(k==i)then if((tab_artykul[artykul])or(tab_artykul2[artykul]))then return false; else return true; end; else tab_artykul2[artykul]=true; end; end; return false; end; local function IleNajblizejDalejBezPoziomowo(p) if(naglowek)then return (p+1);end; local tab=tab_lista[2]; if(not tab)then return (p+1);end; local tab_artykul2={}; local i=p+1; while(true)do if(not tab[i])then return i;end; ----- local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab[i][1]); local artykul=czy_table_baza_artykulu and tab[i][1][1] or tab[i][1]; artykul=UzyskajArtykul(artykul); ----- if((not tab_artykul[artykul])and(not tab_artykul2[artykul]))then return i; end; tab_artykul2[artykul]=true; i=i+1; end; return i; end; ---- local function AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulowa,czy_rozdzial,__FUNKCJA) local poziom_zerowego_naglowka_temp=poziom_zerowego_naglowka or 0; local poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka or 0; local staly_dodatek_artykulu=0; --local poprz_poziom_rozdzialu_lub_artykulu=poziom_naglowka; --local poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_naglowka_bez_poprawki; local staly_dodatek_rozdzialu_temp=staly_dodatek_rozdzialu or 0; local poczatek_poprz=nil; local ostatni_rozdzial_dodatni_temp=ostatni_rozdzial_dodatni; local ostatni_rozdzial_centrowany_temp=ostatni_rozdzial_centrowany; local poziom_zerowego_artykulu=0; local staly_poziom_rozdzialu_z_artykulami=0; local ostatni_artykul_w_rozdziale=nil; local czy_dwukropek=nil; local czy_rozdzial_centrowany_temp=nil; ---- local odejmnij_od_dwukropka=0; local czy_w_trakcie_dwukropkowania=nil; local poziom_znakowy_rozdzialu=tab_lista[1][2][1] or 0; local poziom_rozdzialu=math.abs(poziom_znakowy_rozdzialu); local numer_poprz=(poziom_znakowy_rozdzialu<0)and poziom_rozdzialu or nil; for p,artykul_w_bazie in ipairs(tab_lista_artykulowa)do if((czy_rozdzial and (p>m)) or (not czy_rozdzial))then if((not czy_rozdzial) and (CzyWliczacBezPoziomowo(1,p)) or czy_rozdzial)then local rozdzial=nil; local poziom_artykulu; if(czy_rozdzial)then artykul_w_bazie=artykul_w_bazie[1]; rozdzial=artykul_w_bazie[1]; czy_rozdzial_centrowany_temp=artykul_w_bazie[2][4]; poziom_artykulu=artykul_w_bazie[2][1]; if(poziom_artykulu==1)then local spis=artykul_w_bazie["spis"]; if(spis)then local nazwa_spisu_temp=spis[1]; local numer_spisu_temp=spis[2]; if((nazwa_spisu_temp)and(numer_spisu_temp))then return; end; end; end; else poziom_artykulu=artykul_w_bazie[2][1]; end; local czy_dwukropek_aktualnie=nil; if((czy_rozdzial)and(rozdzial)and(poziom_artykulu)and(poziom_artykulu==0))then czy_dwukropek_aktualnie=mw.ustring.match(rozdzial,":%s*$") czy_dwukropek=czy_dwukropek_aktualnie or czy_dwukropek; end; local poziom_znakowy_artykulu=poziom_artykulu; poziom_artykulu=math.abs(poziom_artykulu); local poziom_poczatku_artykulu=artykul_w_bazie[2][2]; ---- if((not czy_rozdzial)or((czy_rozdzial)and(poziom_znakowy_artykulu<0)))then poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka); end; ---- local w_rozdziale=(not czy_rozdzial) and artykul_w_bazie[2][4] or nil; if((not czy_rozdzial)and(not w_rozdziale))then local czy_poczatek_rozdzialu=(IleNajblizejDalejBezPoziomowo(p-1)>IleNajblizejDalejBezPoziomowo(0)); local __poziom_poczatku_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_poczatku_rozdzialu or poczatek_poprz; local __poziom_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_rozdzialu or poziom_artykulu; poziom_artykulu,staly_poziom_rozdzialu_z_artykulami=PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,__poziom_rozdzialu,__poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami); end; local poziom_srednikowego_naglowka_srednik=0; local czy_artykul_srednik; local poziom_srednikowego_naglowka_srednik_temp; if(czy_rozdzial)then if(poziom_znakowy_artykulu)then if(poziom_znakowy_artykulu==0)then poziom_zerowego_naglowka_temp=1; elseif(poziom_znakowy_artykulu>0)then poziom_zerowego_naglowka_temp=0; poziom_srednikowego_naglowka_temp=0; ostatni_rozdzial_dodatni_temp=(not czy_rozdzial_centrowany_temp) and ostatni_rozdzial_dodatni_temp or nil; czy_dwukropek=nil; else poziom_srednikowego_naglowka_srednik_temp=mw.ustring.match(poziom_poczatku_artykulu,"^;+.*$"); if(poziom_srednikowego_naglowka_srednik_temp)then poziom_srednikowego_naglowka_srednik=#poziom_srednikowego_naglowka_srednik_temp; poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka_srednik; end; end; end; else poziom_srednikowego_naglowka_srednik_temp=mw.ustring.match(poziom_poczatku_artykulu,"^;+.*$"); if(poziom_srednikowego_naglowka_srednik_temp)then poziom_srednikowego_naglowka_srednik=#poziom_srednikowego_naglowka_srednik_temp; poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka_srednik; czy_artykul_srednik=true; end; end; if((czy_rozdzial)and(poziom_znakowy_artykulu>0))then ostatni_rozdzial_dodatni_temp=0; ostatni_rozdzial_centrowany_temp=w_rozdziale and 0 or ostatni_rozdzial_centrowany_temp; end; local id=(not czy_rozdzial)and artykul_w_bazie[4] or nil; local poziom_zerowego_artykulu_aktualny=poziom_artykulu; local poziom_artykulu_zerowy; if(not czy_rozdzial)then local poziom_zerowego_artykulu_poprz=poziom_zerowego_artykulu; poziom_artykulu,poziom_zerowego_artykulu=ToNumberPoziomArtykulu(poziom_artykulu); poziom_artykulu_zerowy=poziom_artykulu; ---- poziom_zerowego_artykulu=ZerowyArtykul(tab_lista_artykulowa,p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka_temp,poziom_zerowego_artykulu_poprz); ---- poziom_artykulu=poziom_artykulu+poziom_zerowego_artykulu; end; if((not czy_rozdzial)and(poziom_znakowy_rozdzialu<0)and(rozdzial==""))then poziom_artykulu=poziom_artykulu+poziom_naglowka_bez_poprawki; else --- if(not czy_rozdzial)then poziom_zerowego_naglowka_temp=((not w_rozdziale)and(ostatni_artykul_w_rozdziale)and(poziom_zerowego_naglowka_temp>0)and(poziom_zerowego_artykulu_aktualny==0)) and (poziom_zerowego_naglowka_temp-1) or poziom_zerowego_naglowka_temp; end; poziom_artykulu=(((czy_rozdzial)and(--[[((ostatni_rozdzial_centrowany_temp or 0)>0)or]](poziom_znakowy_artykulu<=0))or(not czy_rozdzial))and ((ostatni_rozdzial_centrowany_temp or 0)+(ostatni_rozdzial_dodatni_temp or 0)+(poziom_zerowego_naglowka_temp+(((poziom_znakowy_artykulu)and(poziom_znakowy_artykulu==0)and(czy_dwukropek)and(not czy_dwukropek_aktualnie))and 1 or 0)+poziom_srednikowego_naglowka_temp)) or 0)+(((czy_rozdzial)and(poziom_znakowy_artykulu>0)and(not czy_rozdzial_centrowany_temp))and ostatni_rozdzial_centrowany_temp or 0)+((not poziom_srednikowego_naglowka_srednik_temp)and poziom_artykulu or 0)--[[+staly_dodatek_rozdzialu_temp]]+(id and 1 or 0); ----- if(czy_rozdzial)then if(poziom_znakowy_artykulu==0)then if(not czy_dwukropek_aktualnie)then poziom_zerowego_naglowka_temp=1+(czy_dwukropek and 1 or 0); else poziom_zerowego_naglowka_temp=2; end; end; end; end; if(not czy_rozdzial)then if(w_rozdziale)then ostatni_artykul_w_rozdziale=true else ostatni_artykul_w_rozdziale=false;end; end; if((czy_rozdzial)and(poziom_znakowy_artykulu>0))then if(w_rozdziale)then ostatni_rozdzial_dodatni_temp=nil; ostatni_rozdzial_centrowany_temp=poziom_znakowy_artykulu; else ostatni_rozdzial_dodatni_temp=poziom_znakowy_artykulu; end; end; poczatek_poprz=poziom_poczatku_artykulu; poziom_artykulu=poziom_artykulu+((czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); local wynik=__FUNKCJA(poziom_artykulu,poziom_naglowka_bez_poprawki,poziom_znakowy_artykulu,w_rozdziale,ostatni_rozdzial_centrowany_temp,{poziom_srednikowego_naglowka_temp,poziom_srednikowego_naglowka_srednik,},poziom_zerowego_naglowka_temp,poziom_artykulu_zerowy); ostatni_rozdzial_dodatni_temp=(czy_rozdzial_centrowany_temp) and poziom_artykulu or ostatni_rozdzial_dodatni_temp; if(not parametry_modul.TypeNil(wynik))then return wynik;end; local numer_baza=artykul_w_bazie[2][1]; local function __tonumber(liczba) if(czy_rozdzial)then if(liczba<0)then liczba=(liczba and (-liczba) or nil); return liczba; end; else return liczba; end; return nil; end; numer_poprz=(not w_rozdziale)and __tonumber(numer_baza) or ((w_rozdziale)and numer_poprz or nil); end; end; end; end; local function IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista_artykulowa,bez_sprawdzania) local ile_w_rozdziale=0; for s=1,#tab_lista_artykulowa[2],1 do if(bez_sprawdzania or CzyWliczacBezPoziomowo(1,s))then local w_rozdziale=tab_lista_artykulowa[2][s][2][4]; if(w_rozdziale)then ile_w_rozdziale=ile_w_rozdziale+1; else break; end; end; end; return ile_w_rozdziale end; local function KoniecSpisuTresci(poziom_naglowka_bez_poprawki,znak_poziom,czy_srednik) if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0))then local function UsunElementySpisTresci(tab_numer_temp) if(not tab_numer_temp)then return;end; local tab_numer_prawd;local HNumerPoziomow_prawd;local HNumerPoziomowNaglowkow_prawd; for i=#tab_numer_temp,1,-1 do local tab_naglowka=tab_numer_temp[i]; if((tab_naglowka[4]>=poziom_naglowka_bez_poprawki)or((tab_naglowka[5]<0)and((znak_poziom>0)or(czy_srednik))))then tab_numer_prawd=tab_naglowka[1]; HNumerPoziomow_prawd=tab_naglowka[2]; HNumerPoziomowNaglowkow_prawd=tab_naglowka[3] table.remove(tab_numer_temp,i); else break; end; end; if(tab_numer_prawd)then tab_numer=tab_numer_prawd; HNumerPoziomow=HNumerPoziomow_prawd; if(HNumerPoziomowNaglowkow_prawd)then HNumerPoziomowNaglowkow=HNumerPoziomowNaglowkow_prawd;end; return true; end; return nil; end; if(znak_poziom>0)then if(not UsunElementySpisTresci(tab_numer_baza_spis_tresci))then return;end; if(#tab_numer_baza_spis_tresci==0)then glowny_spis_tresci_lub_rozdzial_ksiazki=false; end; tab_poziomowo={}; end; end; end; ---- ----- tab_poziomowo={}; local rozdzial_bez_dwukropka=mw.ustring.match(rozdzial,"^%s*(.-)%s*:[%s:]*$") or rozdzial; czy_jest_teraz_spis_tresci=((m==1)and (czy_nienilowy_rozdzial and tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial_bez_dwukropka] or ((not czy_nienilowy_rozdzial)and true or false)) or ((m>1)and tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial_bez_dwukropka] or false)); poziom_spisu_tresci_dodatek=(czy_jest_teraz_spis_tresci and ((poziom_rozdzialu==0)and 1 or 0) or (poziom_spisu_tresci_dodatek or 0)); local czy_nie_ten_rozdzial; if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0))then czy_nie_ten_rozdzial=false; glowny_spis_tresci_lub_rozdzial_ksiazki=true; else glowny_spis_tresci_lub_rozdzial_ksiazki=false; if((not czy_jest_teraz_spis_tresci)and(nie_wszystkie))then czy_nie_ten_rozdzial=tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu[rozdzial_bez_dwukropka]; end; end; if((m==1)and(not czy_nienilowy_rozdzial))then czy_pierwszy_nilowy=true; czy_pierwszy_nilowy_rozdzial=true; end; if(not czy_nie_ten_rozdzial)then if(poziomowo)then prawdziwy_poziom_rozdzialu=poziom_rozdzialu; poziom_poczatku_rozdzialu=tab_lista[1][2][2]; local numeracja_rozdzialu=tab_lista[1][2][3]; poziom_numeracji_rozdzialu=PoziomNumeracji(numeracja_rozdzialu); czy_rozdzial_centrowany=tab_lista[1][2][4]; ---- local czy_z_dwukropkiem=nil; ---- if(poziom_rozdzialu<0)then poziom_rozdzialu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(-poziom_rozdzialu,poziom_poczatku_rozdzialu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka); numer_poprz=-tab_lista[1][2][1] or 0; poziom_rozdzialu=-poziom_rozdzialu; else numer_poprz=nil; czy_w_trakcie_dwukropkowania=nil; odejmnij_od_dwukropka=0; end; local czy_sredniki; ----- poprzedni_poziom_znakowy_rozdzialu=poziom_znakowy_rozdzialu; poziom_znakowy_rozdzialu=poziom_rozdzialu; poziom_rozdzialu=math.abs(poziom_rozdzialu); local poprzedni_tab_poziomowo_temp=poprzedni_tab_poziomowo; if(poziom_znakowy_rozdzialu>0)then poziom_naglowka=poziom_rozdzialu+(czy_rozdzial_centrowany and 0 or (ostatni_rozdzial_centrowany or 0)); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_spisu_tresci_dodatek=0; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); poziom_pierwszego_ujemnego_spisu_tresci=nil; ---- ostatni_poczatek_artykulu=nil; pierwszy_rowny_rozdzial=nil; ---- if((m>2)or(not czy_pierwszy_nilowy))then poprzedni_tab_poziomowo=nil; end; poziom_zerowego_naglowka=0; poziom_srednikowego_naglowka=0; if(glowny_ujemny_rozdzial)then HNumerPoziomow=HNumerPoziomow_4; HNumerPoziomow_4=nil; tab_numer=tab_numer_4; poziom_pierwszego_ujemnego_naglowka=nil; glowny_ujemny_rozdzial=nil; ---- ---- if((poprz_ujemnego_rozdzialu_dodatniego_rozdzialu)and(poprz_ujemnego_rozdzialu_dodatniego_rozdzialu>0))then pierwszy_ujemny_naglowek=nil; end; end; KoniecSpisuTresci(poziom_naglowka_bez_poprawki,1); if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0)and(not spis_tresci))then numer_rozdzialu=HNumerPoziomow(poziom_naglowka,1); spis_tresci=true; pierwszy_rozdzial_dodatni=1; else if(not pierwszy_rozdzial_dodatni)then pierwszy_rozdzial_dodatni=1; numer_rozdzialu=HNumerPoziomow(poziom_naglowka,1); else numer_rozdzialu=HNumerPoziomow(poziom_naglowka); end; end; if(czy_rozdzial_centrowany)then ostatni_rozdzial_dodatni=nil; ostatni_rozdzial_centrowany=poziom_rozdzialu; else ostatni_rozdzial_dodatni=poziom_rozdzialu; end; elseif(poziom_znakowy_rozdzialu<0)then czy_sredniki=mw.ustring.match(poziom_poczatku_rozdzialu,"^(;+)"); if(czy_sredniki)then poziom_zerowego_naglowka=0; ---- ostatni_poczatek_artykulu=nil; pierwszy_rowny_rozdzial=nil; ---- if(glowny_ujemny_rozdzial)then HNumerPoziomow=HNumerPoziomow_4; HNumerPoziomow_4=nil; tab_numer=tab_numer_4; poziom_pierwszego_ujemnego_naglowka=nil; glowny_ujemny_rozdzial=nil; ---- ---- if((poprz_ujemnego_rozdzialu_dodatniego_rozdzialu)and(poprz_ujemnego_rozdzialu_dodatniego_rozdzialu>0))then pierwszy_ujemny_naglowek=nil; end; end; ---- poziom_srednikowego_naglowka=poziom_rozdzialu; poziom_naglowka=(ostatni_rozdzial_centrowany or 0) + (ostatni_rozdzial_dodatni or 0) + poziom_zerowego_naglowka + poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); numer_rozdzialu=HNumerPoziomow(poziom_naglowka); poziom_znakowy_rozdzialu=-poziom_srednikowego_naglowka; poziom_rozdzialu=poziom_srednikowego_naglowka; KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1,true); else if(not pierwszy_rowny_rozdzial)then if((ostatni_poczatek_artykulu) and(#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu) and(mw.ustring.match(ostatni_poczatek_artykulu,"^*")) and(mw.ustring.match(poziom_poczatku_rozdzialu,"^:")) )then poziom_rozdzialu=poziom_rozdzialu+1; poziom_znakowy_rozdzialu=-poziom_rozdzialu; pierwszy_rowny_rozdzial=1; poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); else poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); end; else if((not ostatni_poczatek_artykulu)or((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^*"))))then pierwszy_rowny_rozdzial=0; elseif((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^:")))then pierwszy_rowny_rozdzial=1; elseif((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^#")))then pierwszy_rowny_rozdzial=nil; end; poziom_rozdzialu=poziom_rozdzialu+(pierwszy_rowny_rozdzial or 0); poziom_znakowy_rozdzialu=-poziom_rozdzialu; poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); end; ---- KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1); ---- numer_rozdzialu=HNumerPoziomow(poziom_naglowka); local numer_rozdzialu_dodatniego=HNumerPoziomowNaglowkow(0) or 0; if(numer_rozdzialu_dodatniego>=numer_rozdzialu)then numer_rozdzialu=HNumerPoziomow(poziom_naglowka,numer_rozdzialu_dodatniego+1); end; end; else if((m>1)or((m==1)and(not czy_pierwszy_nilowy)))then local poziom_zerowego_naglowka_temp=poziom_zerowego_naglowka; czy_z_dwukropkiem=mw.ustring.match(rozdzial,":%s*$"); local dodatek=((czy_z_dwukropkiem)and 1 or 0); poziom_zerowego_naglowka=1+((not czy_z_dwukropkiem)and ((poziom_zerowego_naglowka_temp==2) and 1 or 0) or 1); poziom_naglowka=1+(((not czy_z_dwukropkiem)and(poziom_zerowego_naglowka_temp==2))and 1 or 0)+ (ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0) + 0+poziom_srednikowego_naglowka; poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1); numer_rozdzialu=HNumerPoziomow(poziom_naglowka); poziom_znakowy_rozdzialu=-1; poziom_rozdzialu=1; else poziom_zerowego_naglowka=0; numer_rozdzialu=0; poziom_naglowka=(ostatni_rozdzial_centrowany or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; staly_dodatek_rozdzialu=0; end; end; if(poziom_znakowy_rozdzialu>0)then local numer=HNumerPoziomowNaglowkow(poziom_naglowka); elseif(poziom_znakowy_rozdzialu<0)then end; if(poziom_rozdzialu>0)then if(((czy_ostatni_rozdzial_jest_centrowany)and(ostatni_rozdzial_centrowany or 0)>0)and(#tab_numer>0)and(tab_numer[#tab_numer]==0)and(#tab_numer<=numer_rozdzialu))then tab_numer[#tab_numer]=nil; numer_rozdzialu=HNumerPoziomow(poziom_naglowka,((numer_rozdzialu>1)and(numer_rozdzialu-1) or 1)); czy_ostatni_rozdzial_jest_centrowany=nil; elseif(poprzedni_tab_poziomowo)then local lens=math.min(#poprzedni_tab_poziomowo,numer_rozdzialu-#tab_numer); local len_tab_numer=#tab_numer; local min_lens=math.min(#poprzedni_tab_poziomowo,lens); for i=1,min_lens,1 do tab_numer[len_tab_numer+i]=poprzedni_tab_poziomowo[i]; end; for i=min_lens+1,#tab_numer do tab_numer[len_tab_numer+i]=nil; end; end; if(#tab_numer<numer_rozdzialu)then for i=#tab_numer+1,numer_rozdzialu,1 do table.insert(tab_numer,1); end; elseif(#tab_numer>numer_rozdzialu)then for i=#tab_numer, numer_rozdzialu+1,-1 do table.remove(tab_numer,i); end; tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0) + 1; else tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0) + 1; end; end; local function CzyJestONumerzeMniejszymLubRownymPoziomieNizAktualnyRozdzial() if(poziom_rozdzialu==0)then return true;end; if(poziom_znakowy_rozdzialu>0)then local ile_w_rozdziale_w_naglowku_artykulow=IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista,true); return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_aktualnego_naglowka,poziom_naglowka,poziom_znakowy_naglowka,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(ile_w_rozdziale_w_naglowku_artykulow>0)then return true;end; if(poziom_znakowy_naglowka>0)then if(poziom_aktualnego_naglowka<=poziom_naglowka)then return true; end; end; end); elseif(((m==1) or(((m==2)and(czy_pierwszy_nilowy_rozdzial))or((tab_lista_artykulow_w_ksiazce[m-1]) and((tab_lista_artykulow_w_ksiazce[m-1][1][2][1] or 0)>0)and(tab_lista_artykulow_w_ksiazce[m-1][2])and(#tab_lista_artykulow_w_ksiazce[m-1][2]==IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista_artykulow_w_ksiazce[m-1],true))))) and(poziom_znakowy_rozdzialu<0))then local czy_artykuly=nil;local tak_wynik=nil; if(tab_lista[2])then local czy_w_rozdziale_artykuly=nil; local wynik=AnalizaArtykulowaLubRozdzialowa(tab_lista[2],nil,function(poziom_artykulu,poziom_naglowka,_,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(not w_rozdziale)then czy_artykuly=true; --[[if(((((not czy_z_dwukropkiem)and(czy_w_rozdziale_artykuly))or(poziom_artykulu-(poziom_zerowego_naglowka or 0)<=poziom_naglowka)or(poziom_artykulu-(poziom_srednikowego_naglowka[1] or 0)<=poziom_naglowka))and(poziom_artykulu_zerowy)and(poziom_artykulu_zerowy==0)and(poziom_zerowego_naglowka)and(poziom_zerowego_naglowka>0))and((m>2)or((m==2)and(not czy_pierwszy_nilowy_rozdzial))))then return true; end;]] if(poziom_artykulu<=poziom_naglowka)then return true; end; else czy_w_rozdziale_artykuly=true; end; end); tak_wynik=wynik; end; if((czy_artykuly)or(m==1))then local wynik=AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_aktualnego_naglowka,poziom_naglowka,poziom_znakowy_naglowka,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(poziom_znakowy_naglowka<=0)then if(poziom_aktualnego_naglowka<=poziom_naglowka)then --if((poziom_srednikowego_naglowka[2])and(poziom_srednikowego_naglowka[2]>0))then --return false; --else return true; --end; end; else if((m==1)and(poziom_znakowy_rozdzialu<0)and(poziom_znakowy_naglowka>0))then return true;end; return false; end end); if(wynik~=nil)then return wynik;end; if(tak_wynik~=nil)then return tak_wynik;end; return true; else return true; end; else return true; end; end; local function DodajNaSamPoczatek() local function ArtykulyNieWRozdziale() local ile=0; if(tab_lista[2])then for p,artykul_w_bazie in ipairs(tab_lista[2])do local w_rozdziale=artykul_w_bazie[2][4]; if(not w_rozdziale)then ile=ile+1; end; end; end; return ile; end; if((tab_lista_artykulow_w_ksiazce[m+1])and(ArtykulyNieWRozdziale()>0) and(( (poziom_znakowy_rozdzialu>0) and AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(poziom_znakowy_rozdzialu>0)then if(poziom_artykulu>poziom_naglowka)then return true; end; end; return false; end) )or( (poziom_znakowy_rozdzialu<0) and AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka_temp,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if((poziom_srednikowego_naglowka_temp[2])and(poziom_srednikowego_naglowka)and(poziom_srednikowego_naglowka_temp[2]>poziom_srednikowego_naglowka))then if(poziom_znakowy_rozdzialu<0)then if(poziom_artykulu>poziom_naglowka)then return true; end; end; end; return false; end) )) )then if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; table.insert(tab_numer,0); return true; else if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; return false; end; end; if((m==1)and(czy_pierwszy_nilowy)and(poziom_znakowy_rozdzialu==0))then if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; tab_numer={}; elseif((czy_jest_teraz_spis_tresci)and((poziom_znakowy_rozdzialu>0)or(poziom_znakowy_rozdzialu<0)))then local function Poziom_dodatni_lub_ujemny() return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(poziom_artykulu>poziom_naglowka)then return true; elseif(czy_sredniki)then return true; end; return false; end); end; local function czy_inaczej_numeruj_rozdzial_dodatni() return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],false,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(not w_rozdziale)then if(poziom_artykulu>poziom_naglowka)then return true; end; return false; end; end); end; local function czy_inaczej_numeruj_rozdzial_ujemny() return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],nil,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(poziom_artykulu>poziom_naglowka)then return true; end; end); end; if((poziom_znakowy_rozdzialu>0)and((czy_inaczej_numeruj_rozdzial_dodatni())or(Poziom_dodatni_lub_ujemny())))then glowny_spis_tresci_lub_rozdzial_ksiazki=true; if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; ---- if(not tab_poziomowo_1)then tab_poziomowo_1={};end; table.insert(tab_poziomowo_1,{tab_poziomowo,poziom_naglowka_bez_poprawki,}); ---- tab_poziomowo={}; tab_numer_zapasowe=tab_numer; ------ if(not tab_numer_baza_spis_tresci)then tab_numer_baza_spis_tresci={};end; table.insert(tab_numer_baza_spis_tresci,{tab_numer,HNumerPoziomow,HNumerPoziomowNaglowkow,poziom_naglowka_bez_poprawki,1,}); ----- HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); spis_tresci=false; ----- tab_numer={}; elseif((poziom_znakowy_rozdzialu<0)and((czy_inaczej_numeruj_rozdzial_ujemny())or(Poziom_dodatni_lub_ujemny())))then glowny_spis_tresci_lub_rozdzial_ksiazki=true; if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; ---- if(not tab_poziomowo_1)then tab_poziomowo_2={};end; table.insert(tab_poziomowo_2,{tab_poziomowo,poziom_naglowka_bez_poprawki,}); ---- tab_poziomowo={}; tab_numer_zapasowe=tab_numer; ----- if(not tab_numer_baza_spis_tresci)then tab_numer_baza_spis_tresci={};end; table.insert(tab_numer_baza_spis_tresci,{tab_numer,HNumerPoziomow,nil,poziom_naglowka_bez_poprawki,-1,}); spis_tresci=false; ----- HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); ----- tab_numer={}; end; local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek(); if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; elseif(((not czy_jest_teraz_spis_tresci)and(not czy_rozdzial_spisu)and(((not pierwszy_dodatni_naglowek)and(poziom_znakowy_rozdzialu>0)) or(((not pierwszy_ujemny_naglowek)or((prawdziwy_poziom_rozdzialu_poprz)and(prawdziwy_poziom_rozdzialu_poprz>0)))and(poziom_znakowy_rozdzialu<0)))) and(not CzyJestONumerzeMniejszymLubRownymPoziomieNizAktualnyRozdzial()))and((not czy_pierwszy_nilowy_rozdzial)or((#tab_numer~=1)or(tab_numer[1]==1)))then glowny_spis_tresci_lub_rozdzial_ksiazki=true; if(poziom_rozdzialu>0)then if(poziom_znakowy_rozdzialu>0)then if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; ---- HNumerPoziomowNaglowkow_2=HNumerPoziomowNaglowkow; HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); tab_numer_zapasowe=tab_numer; tab_numer_3=tab_numer; tab_numer={}; HNumerPoziomow_3=HNumerPoziomow; HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); pierwszy_dodatni_naglowek=true; poziom_pierwszego_dodatniego_naglowka=poziom_rozdzialu; glowny_dodatni_rozdzial=true; else if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; ---- tab_numer_zapasowe=tab_numer; tab_numer_4=tab_numer; tab_numer=parametry_modul["KopiujTabelęElementów"](tab_numer); tab_numer[#tab_numer]=nil; HNumerPoziomow_4=HNumerPoziomow; HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); if(poprz_poziom_rozdzialu_lub_artykulu)then numer_rozdzialu=HNumerPoziomow(poprz_poziom_rozdzialu_lub_artykulu,#tab_numer); end; pierwszy_ujemny_naglowek=true; poprz_ujemnego_rozdzialu_dodatniego_rozdzialu=(m>1) and prawdziwy_poziom_rozdzialu_poprz or false; poziom_pierwszego_ujemnego_naglowka=poziom_rozdzialu; glowny_ujemny_rozdzial=true; end; else if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; end; local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek(); if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; else local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek(); if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; ---- if(wartosc)then else if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; end; end; -- end; zbieraj_dane=true; poprz_numeracji_rozdzialu_lub_artykulu=poziom_numeracji_rozdzialu; poprz_poziom_rozdzialu_lub_artykulu=poziom_naglowka; poprz_numer_rozdzialu_lub_artykulu=numer_rozdzialu; poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_naglowka_bez_poprawki; prawdziwy_poziom_rozdzialu_poprz=prawdziwy_poziom_rozdzialu; ----- if(((not czy_rozdzial_spisu))and((m>1)or((m==1)and(not czy_pierwszy_nilowy_rozdzial))))then if(prawdziwy_poziom_rozdzialu>0)then pierwszy_dodatni_naglowek=true; pierwszy_ujemny_naglowek=nil; else pierwszy_ujemny_naglowek=true; pierwszy_dodatni_naglowek=true; end; end; ---- czy_ostatni_rozdzial_jest_centrowany=((poziom_znakowy_rozdzialu>0)and(czy_rozdzial_centrowany and true or nil) or ((poziom_znakowy_rozdzialu<=0)and czy_ostatni_rozdzial_jest_centrowany or nil)); else local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; if((tab_lista[2])and(parametry_modul["CzySąElementyNumerowaneTablicy"](tab_lista[2])))then local HNumerArtykulu=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local HNumerPoziomu=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local czy_dwukropek_artykulu=nil; local stare_HNumerArtykulu=nil; local stare_HNumerPoziomu=nil; local czy_tytul_rozdzial=nil; local czy_ma_elementy=nil; ostatni_poczatek_artykulu=nil; local czy_zera=nil; local ile_w_rozdziale=nil; local poprz_poziom_artykulu_bez_b=nil; local k=1; ----- local czy_w_rozdziale_rejestrowane_osobno_artykuly=nil; local artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=nil; local czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=nil; ----- local numer_poprz_w_rozdziale=nil; local poczatek_poprz=nil; local id_poprz=nil; local tab_poprzedni_artykul_w_bazie=nil; local odejmnij_od_dwukropka_w_rozdziale=0; ----- local czy_w_trakcie_dwukropkowania_w_rozdziale=nil; ----- local poziom_zerowego_artykulu=0; local staly_poziom_rozdzialu_z_artykulami=0; local nilowanie_poprzedniego_rejestru_tab_poziomowo=nil; local czy_w_podreczniku_poprz=nil; ----- local stare_HNumerPoziomu_poza_rozdzialem=nil; local ile_w_rozdziale_licznik=1; local staly_dodatek_rozdzialu_temp=0; local staly_dodatek_rozdzialu_roz=staly_dodatek_rozdzialu; local staly_dodatek_artykulu=0; local ostatni_artykul_w_rozdziale=nil; local tab_numer_w_rozdziale=nil; local podrozdzial_spisu=nil; local dodatek_poprz=nil; ----- for p,artykul_w_bazie in ipairs(tab_lista[2])do local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]); local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1]; local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil; local Przekierowanie=function(przekierowanie) return (((parametry_modul.TypeString(przekierowanie))and(przekierowanie))or(parametry_modul.TypeTable(przekierowanie)and(((przekierowanie[1])and((przekierowanie[2])or(przekierowanie[3])))or(przekierowanie[1]))and(przekierowanie[1]..(przekierowanie[2] and ("?"..(przekierowanie[2] or "")) or "")..(przekierowanie[3] and ("#"..(przekierowanie[3] or "")) or "")))); end; local czy_w_podreczniku=artykul_w_bazie[5]; local czy_inna_ksiazka; if(czy_table_baza_artykulu)then local czy_table_dane=parametry_modul.TypeTable(artykul_w_bazie[1][4]); if(czy_table_dane)then czy_inna_ksiazka=artykul_w_bazie[1][4][5]; end; end; local czy_url=czy_table_baza_artykulu and artykul_w_bazie[1][9] or nil; local przekierowanie=(czy_w_podreczniku) and (czy_table_baza_artykulu and ((not artykul_w_bazie[1][4])and(not artykul_w_bazie[1][7]) and Przekierowanie(artykul_w_bazie[1][3]) or {Przekierowanie(artykul_w_bazie[1][3]),artykul_w_bazie[1][4],nil,nil,artykul_w_bazie[1][7],}) or nil) or (((not czy_w_podreczniku)and(czy_table_baza_artykulu)and(artykul_w_bazie[1][5])or(artykul_w_bazie[1][6])or(artykul_w_bazie[1][7])) and {nil,nil,artykul_w_bazie[1][5],artykul_w_bazie[1][6],artykul_w_bazie[1][7],} or nil); --- local czy_dodane_lub_kolega=czy_table_baza_artykulu and artykul_w_bazie[1][8] or nil; local czy_dodane=parametry_modul.TypeBoolean(czy_dodane_lub_kolega) and czy_dodane_lub_kolega or nil; local ile_dodano=parametry_modul.TypeNumber(czy_dodane_lub_kolega) and czy_dodane_lub_kolega or nil; ---- artykul=UzyskajArtykul(artykul); ---- if(naglowek or not tab_artykul[artykul])then pierwszy_rowny_rozdzial=nil; czy_ma_elementy=true; if(not naglowek)then tab_artykul[artykul]=true; end; local tab_artykul_w_bazie; local w_rozdziale; if(poziomowo)then local poziom_artykulu=artykul_w_bazie[2][1]+(ile_dodano or 0); local poziom_poczatku_artykulu=artykul_w_bazie[2][2]; ---- local czy_poczatek_rozdzialu=(IleNajblizejDalejBezPoziomowo(p-1)>IleNajblizejDalejBezPoziomowo(0)); w_rozdziale=artykul_w_bazie[2][4]; poziom_artykulu=poziom_artykulu+(w_rozdziale and 1 or 0)+((((ile_dodano)and(ile_dodano>0))and(w_rozdziale))and 1 or 0); if(w_rozdziale)then poziom_artykulu,odejmnij_od_dwukropka_w_rozdziale,czy_w_trakcie_dwukropkowania_w_rozdziale=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz_w_rozdziale or 0,czy_w_trakcie_dwukropkowania_w_rozdziale,odejmnij_od_dwukropka_w_rozdziale); numer_poprz_w_rozdziale=tonumber(tab_lista[2][p][2][1]); else poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka); end; ---- local numeracja_artykulu=artykul_w_bazie[2][3]; local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu); local czy_rozdzial_z_poczatkiem_jedynki=nil; if(w_rozdziale)then if(not stare_HNumerPoziomu_poza_rozdzialem)then stare_HNumerPoziomu_poza_rozdzialem=HNumerPoziomow; HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); ----- tab_numer_w_rozdziale=tab_numer; tab_numer=tab_numer_zapasowe or tab_numer; end; local function CzyRozdzialMaArtykulyNieWewnetrzNaglowka() local czy_artykuly=nil; return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],false,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(not w_rozdziale)then czy_artykuly=true; if(poziom_artykulu>poziom_naglowka)then return true; end; return false; end; end),czy_artykuly; end; local function CzyRozdzialMaRozdzialyNieWewnetrzNaglowka() return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu_artykulu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if((poziom_znakowy_rozdzialu<0)and(poziom_znakowy_rozdzialu_artykulu>0))then return false; else if(poziom_artykulu>poziom_naglowka)then return true; end; return false; end; end); end; if(not ile_w_rozdziale)then ile_w_rozdziale=IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista,false); end; if(ile_w_rozdziale_licznik==ile_w_rozdziale)then czy_w_trakcie_dwukropkowania_w_rozdziale=nil; odejmnij_od_dwukropka_w_rozdziale=0; numer_poprz_w_rozdziale=nil; ostatni_artykul_w_rozdziale=true; end; ile_w_rozdziale_licznik=ile_w_rozdziale_licznik+1; if((poziom_znakowy_rozdzialu>0)and(ile_w_rozdziale==1))then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,{},nil,tab_lista[2][p][5],przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; czy_w_rozdziale_rejestrowane_osobno_artykuly=true; elseif(not artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka)then artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=true; if(parametry_modul.TypeNil(czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka))then local czy_ma_artykuly; czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka,czy_ma_artykuly=CzyRozdzialMaArtykulyNieWewnetrzNaglowka(); if((not czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka)and(not czy_ma_artykuly))then czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=CzyRozdzialMaRozdzialyNieWewnetrzNaglowka(); end; end; if((czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka)and(not glowny_ujemny_rozdzial))then tab_numer[#tab_numer+1]=0; end; end; else if((artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka)or(czy_w_rozdziale_rejestrowane_osobno_artykuly))then ----- tab_poziomowo={}; HNumerPoziomu=stronicowyparser_potrzebne_modul.LiczonyHNumer(); HNumerArtykulu=stronicowyparser_potrzebne_modul.LiczonyHNumer(); ----- artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=nil; czy_w_rozdziale_rejestrowane_osobno_artykuly=nil; ---- k=1; tab_poprzedni_artykul_w_bazie=nil; end; --- if(not czy_zera)then if((((not czy_nienilowy_rozdzial)and(m==1))or((czy_nienilowy_rozdzial)and(m>=1)))and(k==1))then local numer=tab_lista[2][p][2][1]; local poczatek=tab_lista[2][p][2][2]; if(((not czy_nienilowy_rozdzial)and(mw.ustring.match(poczatek,"^:")))or(numer+poziom_numeracji_artykulu==0))then for s=p+1,#tab_lista[2],1 do if(CzyWliczacBezPoziomowo(p,s))then local numer=tab_lista[2][s][2][1]; local poczatek=tab_lista[2][s][2][2]; local numeracja_artykulu=tab_lista[2][s][2][3]; local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu); if((mw.ustring.match(poczatek,"^#"))or(numer+poziom_numeracji_artykulu>0))then if(((#tab_numer>0)and(tab_numer[#tab_numer]~=0))or(#tab_numer==0))then table.insert(tab_numer,0); end; tab_poziomowo={}; czy_zera=true; break; elseif((not mw.ustring.match(poczatek,"^:"))and(not(#poczatek==0)))then break; end; end; end; end; end; else local numer=tonumber(tab_lista[2][p][2][1]); local poczatek=tab_lista[2][p][2][2]; local id=tab_lista[2][p][4]; local function DodajUsunNumerek(jedno,drugie,trzecie) if((not jedno)and(not drugie)and(not trzecie))then return;end; if((#tab_numer>(HNumerPoziomowNaglowkow(0) or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka))then czy_zera=false; tab_poziomowo={}; table.remove(tab_numer,#tab_numer); if(#tab_numer>0)then tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0)+1; end; czy_rozdzial_z_poczatkiem_jedynki=true; end; end; DodajUsunNumerek(((mw.ustring.match(poczatek_poprz,"^:"))and(mw.ustring.match(poczatek,"^#"))),((#poczatek_poprz==0)and(not id_poprz)and(#poczatek>0)and(not id)),((#poczatek_poprz+poprz_numeracji_rozdzialu_lub_artykulu==0)and(numer+poziom_numeracji_artykulu>0))); end; if((not czy_zera) and((k==1)and(not w_rozdziale)and(tab_lista_artykulow_w_ksiazce[m+1]) and(((m==1)and(not czy_nienilowy_rozdzial)and(((artykul_w_bazie[2][1]+poziom_numeracji_artykulu)==0)or(tab_lista_artykulow_w_ksiazce[m+1][1][2][1]>0))) or((m>1)and(czy_nienilowy_rozdzial)and((artykul_w_bazie[2][1]+poziom_numeracji_artykulu)==0))) ))then local czy_sa_jakies_artykuly_niezerowe=false;local ile=0; local poziom_zerowy=artykul_w_bazie[2][1]+poziom_numeracji_artykulu; if(poziom_zerowy)then for h,artykul_w_bazie in ipairs(tab_lista[2])do if(h>p)then local poziom_artykulu=artykul_w_bazie[2][1]; local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu); if(poziom_artykulu+poziom_numeracji_artykulu>0)then czy_sa_jakies_artykuly_niezerowe=true; break; end; end; end; for h,artykul_w_bazie in ipairs(tab_lista[2])do if(h>=p)then ile=ile+1; end; end; end; if(((poziom_zerowy==0)and(czy_sa_jakies_artykuly_niezerowe)or(not czy_nienilowy_rozdzial))or(poziom_zerowy>0))then if(ile<=5)then table.insert(tab_numer,0); else nilowanie_poprzedniego_rejestru_tab_poziomowo=true; end end; end; end; ostatni_poczatek_artykulu=poziom_poczatku_artykulu; ----- local poziom_zerowego_artykulu_poprz=poziom_zerowego_artykulu; poziom_artykulu,poziom_zerowego_artykulu=ToNumberPoziomArtykulu(poziom_artykulu); local poziom_zerowego_artykulu_aktualny=poziom_artykulu; poziom_zerowego_artykulu=ZerowyArtykul(tab_lista[2],p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka,poziom_zerowego_artykulu_poprz); ---- local czy_sredniki=mw.ustring.match(poziom_poczatku_artykulu,"^(;+)"); if(czy_sredniki)then poziom_zerowego_naglowka=0; if(glowny_ujemny_rozdzial)then HNumerPoziomow=HNumerPoziomow_4; HNumerPoziomow_4=nil; tab_numer=tab_numer_4; poziom_pierwszego_ujemnego_naglowka=nil; glowny_ujemny_rozdzial=nil; ---- end; KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1,true); end; ---- local poziom_czysty_artykulu=poziom_artykulu; ---- local __poziom_poczatku_rozdzialu= (not czy_poczatek_rozdzialu) and poziom_poczatku_rozdzialu or poczatek_poprz; local __poziom_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_rozdzialu or poziom_artykulu; poziom_artykulu,staly_poziom_rozdzialu_z_artykulami=PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,__poziom_rozdzialu,__poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami); ---- poziom_zerowego_naglowka=czy_sredniki and 0 or poziom_zerowego_naglowka; poziom_zerowego_artykulu=czy_sredniki and 0 or poziom_zerowego_artykulu; ---- poziom_srednikowego_naglowka=czy_sredniki and 0 or poziom_srednikowego_naglowka; ---- poziom_zerowego_naglowka=((ostatni_artykul_w_rozdziale)and(not w_rozdziale)and(poziom_zerowego_naglowka>0)and(poziom_zerowego_artykulu_aktualny==0)) and (poziom_zerowego_naglowka-1) or poziom_zerowego_naglowka; if((ostatni_artykul_w_rozdziale)and(not w_rozdziale))then ostatni_artykul_w_rozdziale=nil; end; ---- if((poziom_znakowy_rozdzialu<0)and(rozdzial==""))then poziom_artykulu=poziom_naglowka+poziom_artykulu+poziom_zerowego_artykulu+(poziom_spisu_tresci_dodatek or 0); else poziom_artykulu=poziom_artykulu+poziom_zerowego_artykulu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+((not czy_sredniki)and poziom_srednikowego_naglowka or 0)+(poziom_spisu_tresci_dodatek or 0); end; ---- local poziom_podany_artykulu_bez_numeracji=poziom_artykulu; poziom_artykulu=poziom_artykulu+(poziom_numeracji_artykulu or 0); ---- local __poprz_poziom_rozdzialu_lub_artykulu=((poziom_znakowy_rozdzialu>0) and poprz_poziom_rozdzialu_lub_artykulu or poziom_naglowka); local __poprz_czysty_poziom_rozdzialu_lub_artykulu=(poziom_znakowy_rozdzialu>0) and poprz_czysty_poziom_rozdzialu_lub_artykulu or poziom_numeracji_rozdzialu; if(not w_rozdziale)then if(k==1)then staly_dodatek_rozdzialu_temp=staly_dodatek_rozdzialu_roz; end; end; poziom_artykulu,staly_dodatek_rozdzialu_temp--[[staly_dodatek]]=PoziomNumerNaglowka(poziom_podany_artykulu_bez_numeracji,poziom_numeracji_artykulu,__poprz_poziom_rozdzialu_lub_artykulu,__poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu_temp--[[staly_dodatek]]); if(not w_rozdziale)then staly_dodatek_rozdzialu=staly_dodatek_rozdzialu_temp;end; ---- local prefix_poziom_artykulu=poziom_artykulu; local function WielopoziomowyAdres(poziom_artykulu,poprz_poziom_artykulu_bez_b,tab_poprzedni_artykul_w_bazie,staly_dodatek_artykulu) local b=0; local tab_artykul_w_bazie=mw.text.split(artykul,"/"); if((tab_poprzedni_artykul_w_bazie)and((czy_w_podreczniku_poprz)and(czy_w_podreczniku)))then if((#tab_artykul_w_bazie>1)or(#tab_poprzedni_artykul_w_bazie>1))then for c=1,#tab_artykul_w_bazie,1 do local podstrona_artykul=tab_artykul_w_bazie[c]; local podstrona_poprzedni_artykul=tab_poprzedni_artykul_w_bazie[c]; if(podstrona_artykul==podstrona_poprzedni_artykul)then b=b+1; else break; end; end; end; else if(k==1)then if(#tab_artykul_w_bazie>1)then local podrozdzial_artykulu=tab_artykul_w_bazie[1]; podrozdzial_artykulu=parametry_modul["Odstępy"]{[1]=podrozdzial_artykulu,[2]="tak",}; podrozdzial_artykulu=mw.getContentLanguage():ucfirst(podrozdzial_artykulu); if(not podrozdzial_spisu)then podrozdzial_spisu=parametry_modul["Odstępy"]{[1]=rozdzial,[2]="tak",}; podrozdzial_spisu=mw.getContentLanguage():ucfirst(podrozdzial_spisu); end; local czy_z_rozdzialem=(podrozdzial_artykulu==podrozdzial_spisu); if(czy_z_rozdzialem)then b=1;end; end; end end; if((#tab_artykul_w_bazie==b)and(#tab_poprzedni_artykul_w_bazie==b))then b=b-1;end; if(not poprz_poziom_artykulu_bez_b)then staly_dodatek_artykulu={b,true}; return 0,staly_dodatek_artykulu,tab_artykul_w_bazie; end; if(poziom_artykulu==poprz_poziom_artykulu_bez_b)then if((k>=2)and(czy_w_podreczniku)and(staly_dodatek_artykulu[2])and(staly_dodatek_artykulu[1]==0)and(#tab_poprzedni_artykul_w_bazie>1)and(b>0)and(#tab_poprzedni_artykul_w_bazie>=b+1))then staly_dodatek_artykulu[1]=b; staly_dodatek_artykulu[2]=false; end; if(((k==2)or(staly_dodatek_artykulu[3]))and(not czy_w_podreczniku))then staly_dodatek_artykulu[3]=k; elseif((k>2)and(czy_w_podreczniku)and((staly_dodatek_artykulu[3] or 0)+2==k)and(b>0))then staly_dodatek_artykulu[3]=nil; staly_dodatek_artykulu[1]=b; end; local poziom_numeracji=b-(staly_dodatek_artykulu[1] or 0); return ((czy_w_podreczniku)and ((poziom_numeracji>=0)and poziom_numeracji or 0)or(dodatek_poprz)),staly_dodatek_artykulu,tab_artykul_w_bazie; elseif(poziom_artykulu~=poprz_poziom_artykulu_bez_b)then staly_dodatek_artykulu={b,true}; if((k==2)and(not czy_w_podreczniku))then staly_dodatek_artykulu[3]=k; end; return 0,staly_dodatek_artykulu,tab_artykul_w_bazie; end; return 0,staly_dodatek_artykulu,tab_artykul_w_bazie; end; ----- local dodatek; dodatek,staly_dodatek_artykulu,tab_artykul_w_bazie=WielopoziomowyAdres(poziom_artykulu,poprz_poziom_artykulu_bez_b,tab_poprzedni_artykul_w_bazie,staly_dodatek_artykulu); poprz_poziom_artykulu_bez_b=poziom_artykulu; local numer_poziomu=HNumerPoziomow(poziom_artykulu); ----- if(not w_rozdziale)then if(poziom_znakowy_rozdzialu<0)then if(poziom_artykulu<=(poziom_pierwszego_ujemnego_naglowka or 0))then tab_poziomowo=tab_numer_4; tab_numer={}; HNumerPoziomu=HNumerPoziomow_4; HNumerArtykulu(poziom_artykulu,HNumerPoziomu(0)); else local numer=numer_rozdzialu-numer_poziomu; if(numer>=0)then local tab_numer_s=tab_numer; local tab_poziomowo_s=tab_poziomowo; tab_numer={};tab_poziomowo={}; if(#tab_numer_s>=numer_poziomu-1)then for i=1,numer_poziomu-1,1 do tab_numer[i]=tab_numer_s[i]; end; for i=numer_poziomu,#tab_numer_s,1 do tab_poziomowo[i-numer_poziomu+1]=tab_numer_s[i]; end; for i=1,#tab_poziomowo_s,1 do tab_poziomowo[i+#tab_numer_s-numer_poziomu+1]=tab_poziomowo_s[i]; end; else for i=1,#tab_numer_s,1 do tab_numer[i]=tab_numer_s[i]; end; for i=1,numer_poziomu-1,1 do tab_numer[i+#tab_numer_s]=tab_poziomowo_s[i]; end; for i=numer_poziomu,#tab_poziomowo_s,1 do tab_poziomowo[i-numer_poziomu+1]=tab_poziomowo_s[i]; end; end; end; end; end; end; if(not czy_w_rozdziale_rejestrowane_osobno_artykuly)then if((not w_rozdziale)and(poziomowo)and(poziom_znakowy_rozdzialu<0))then if((numer_rozdzialu>=numer_poziomu)and(numer_poziomu>=1))then HNumerPoziomu(poziom_artykulu,1); HNumerArtykulu(poziom_artykulu,1); end; end; local stala=poziom_artykulu; if(czy_rozdzial_z_poczatkiem_jedynki)then HNumerPoziomu(stala,1); HNumerArtykulu(stala,1); end; local numer_poziomu=HNumerPoziomu(stala); poziom_artykulu=stala+dodatek; local numer=HNumerArtykulu(poziom_artykulu); local roznica=numer_poziomu-numer; if(roznica>0)then numer=HNumerArtykulu(poziom_artykulu,numer_poziomu); end; if(#tab_poziomowo<numer)then for i=#tab_poziomowo+1,numer,1 do table.insert(tab_poziomowo,1); end; else if(#tab_poziomowo>numer)then for i=#tab_poziomowo,numer+1,-1 do table.remove(tab_poziomowo,i); end; end; tab_poziomowo[#tab_poziomowo]=(tab_poziomowo[#tab_poziomowo] or 0)+1; end; end; ---- tab_poprzedni_artykul_w_bazie=tab_artykul_w_bazie; poprz_numeracji_rozdzialu_lub_artykulu=poziom_numeracji_artykulu; poprz_poziom_rozdzialu_lub_artykulu=poziom_artykulu; poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_podany_artykulu_bez_numeracji; poziom_srednikowego_naglowka=czy_sredniki and poziom_czysty_artykulu or poziom_srednikowego_naglowka; numer_poprz=(not w_rozdziale)and tonumber(tab_lista[2][p][2][1]) or ((w_rozdziale)and numer_poprz or nil); poprz_numer_rozdzialu_lub_artykulu=numer_poziomu; poczatek_poprz=tab_lista[2][p][2][2]; id_poprz=tab_lista[2][p][4]; czy_w_podreczniku_poprz=czy_w_podreczniku; dodatek_poprz=dodatek; end; local wartosc; if(not czy_w_rozdziale_rejestrowane_osobno_artykuly)then wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,nil,tab_lista[2][p][5],przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; if(not poziomowo)then i=i+1; else if((ostatni_artykul_w_rozdziale)and(w_rozdziale))then HNumerPoziomow=stare_HNumerPoziomu_poza_rozdzialem; stare_HNumerPoziomu_poza_rozdzialem=nil; tab_numer=tab_numer_w_rozdziale; poprzedni_tab_poziomowo=nil; ----- poziom_zerowego_artykulu=0; ----- czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=nil; if((#tab_numer>0)and(tab_numer[#tab_numer]==0))then tab_numer[#tab_numer]=nil; end; else if(not nilowanie_poprzedniego_rejestru_tab_poziomowo)then poprzedni_tab_poziomowo=tab_poziomowo; else poprzedni_tab_poziomowo={1,}; end; end; end; k=k+1; end; end; if(not czy_ma_elementy)then poprzedni_tab_poziomowo=nil; end; else poprzedni_tab_poziomowo=nil; end; end; end; return; end; local function ZamienNumerArtykuluNaTabele(numer_artykulu) local tab_numer_artykulu=mw.text.split(numer_artykulu,".",true); return tab_numer_artykulu; end; local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) if(#tab_numer_artykulu<=1)then return tab_numer_artykulu;end; local stronicowyparser_modul=require("Module:StronicowyParser"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local parametry_modul=require("Module:Parametry"); local nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly=stronicowyparser_modul["DaneUkładuAutonawigacji"](frame,tabela_listy_danych_analizy_ksiazki); if((not tab_inne_spisy)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tab_inne_spisy)))then return tab_numer_artykulu;end; local tab_w_spis={}; for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do local poziom_rozdzialu=tab_lista[1][2][1]; if(tab_lista[2])then for p,artykul_w_bazie in ipairs(tab_lista[2])do if((m>1)and(poziom_rozdzialu==1))then break;end; local czy_table_baza_artykulu=parametry_modul.TypeTable(artykul_w_bazie[1]); local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1]; local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil; local czy_artykul=nil; for _,tab_lub_str in ipairs(tab_inne_spisy)do local czy_tab_lub_str=parametry_modul.TypeTable(tab_lub_str); if(czy_tab_lub_str)then if(tab_lub_str[1]==artykul)then czy_artykul=true; end; else if(tab_lub_str==artykul)then czy_artykul=true; end; end; end; if(czy_artykul)then tab_w_spis[artykul]=true; end; end; end; end; local czy_w_spis=true; for _,name in ipairs(tab_inne_spisy)do local czy_table_name=parametry_modul.TypeTable(name); czy_w_spis=czy_w_spis and tab_w_spis[czy_table_name and name[1] or name]; if(not czy_w_spis)then break;end; end; if(not czy_w_spis)then return tab_numer_artykulu; end; if((tab_numer_artykulu)and(#tab_numer_artykulu>1)and(tab_numer_artykulu[1])and(tab_numer_artykulu[1]=='1'))then table.remove(tab_numer_artykulu,1); end; if((tab_numer_artykulu)and(#tab_numer_artykulu>1)and(tab_numer_artykulu[1])and(tab_numer_artykulu[1]=='1'))then local nazwa_spisu,numer_spisu; local czy_jedno=true;local pierwszy_rozdzial; for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do local poziom_rozdzialu=tab_lista[1][2][1]; if(m>1)then if(poziom_rozdzialu==1)then break; elseif(m==2)then pierwszy_rozdzial=poziom_rozdzialu; elseif(m>2)then czy_jedno=czy_jedno and pierwszy_rozdzial and (pierwszy_rozdzial<poziom_rozdzialu); end; end; end; if(czy_jedno)then table.remove(tab_numer_artykulu,1); end; end; return tab_numer_artykulu; end; local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu) local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu); if(#tab_numer_artykulu<1)then return tab_numer_artykulu;end; local tab_numer_spisu=ZamienNumerArtykuluNaTabele(numer_spisu); local lens=#tab_numer_spisu; for i=lens,1,-1 do if(i==lens)then tab_numer_artykulu[1]=tab_numer_spisu[i]; else table.insert(tab_numer_artykulu,1,tab_numer_spisu[i]); end; end; return tab_numer_artykulu; end; p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki) local s=1; local parametry_modul=require("Module:Parametry"); local args_kopia; local tab_spis; local dane_szablonu; local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki) ---- dane_szablonu=dane_szablonu or pierwszy_parametr_szablonu(); local nazwa_artykulu,czy_nazwa,dane=dane_szablonu[1],dane_szablonu[2],dane_szablonu[3]; ---- if((((dane==2)or(dane==3))and(artykul=="")and(rozdzial==nazwa_artykulu))or(((dane==1)or(dane==3))and(artykul~="")and((nazwa_artykulu==artykul)or(((przekierowanie)and(parametry_modul.TypeString(przekierowanie))and(przekierowanie==nazwa_artykulu))or(parametry_modul.TypeTable(przekierowanie)and(przekierowanie[1]==nazwa_artykulu))))))then if(s==ktory)then if(poziomowo)then local numer_artykulu=(table.concat(tab_numer,".")..((#tab_numer>0) and ((#tab_poziomowo>0) and "." or "") or "")..table.concat(tab_poziomowo,".")); if((not nazwa_spisu)or(not numer_spisu) or ((not glowny_spis_tresci_lub_rozdzial_ksiazki)and((tonumber(numer_artykulu) or 1)>1)) or((glowny_spis_tresci_lub_rozdzial_ksiazki)and((numer_spisu or 1)>1)) )then return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki; elseif((numer_spisu)and(numer_spisu==1))then if(glowny_spis_tresci_lub_rozdzial_ksiazki)then return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki; else local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu); tab_numer_artykulu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu); return table.concat(tab_numer_artykulu,"."),glowny_spis_tresci_lub_rozdzial_ksiazki; end; end; local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci; if((not tab_spis)or(not tab_spis[nazwa_spisu]))then if(not args_kopia)then local args=parametry_modul.PobierzArgsParametry(frame,true); args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args); end; args_kopia[1]=nazwa_spisu; if(not tab_spis)then tab_spis={};end; tab_spis[nazwa_spisu]={}; numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=PobierzNumerLubNazweArtykulu({args=args_kopia,},tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,}; else local tab_element=tab_spis[nazwa_spisu]; numer_spisu_tresci=tab_element[1]; glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2]; end; if(not numer_spisu_tresci)then return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki;end; local tab_numer_artykulu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu_tresci); tab_numer_artykulu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) or tab_numer_artykulu; return table.concat(tab_numer_artykulu,"."),glowny_spis_tresci_lub_rozdzial_ksiazki; else return i,glowny_spis_tresci_lub_rozdzial_ksiazki; end; end; s=s+1; end; end; local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; end; p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki) local s=1; local parametry_modul=require("Module:Parametry"); local args_kopia; local tab_spis; local dane_szablonu; local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki) ---- dane_szablonu=dane_szablonu or pierwszy_parametr_szablonu(); local numer,czy_nazwa,dane=dane_szablonu[1],dane_szablonu[2],dane_szablonu[3]; ---- if((not poziomowo)and(i==numer))then if(s==ktory)then if(artykul~="")then local wartosc=(not czy_nazwa) and artykul or (nazwa or artykul); return wartosc; else return rozdzial; end; else s=s+1; end; elseif(poziomowo)then local function NumerArtykulu(tab_numer,tab_poziomowo) return (table.concat(tab_numer,".")..((#tab_numer>0) and ((#tab_poziomowo>0) and "." or "") or "")..table.concat(tab_poziomowo,".")); end; local function WynikArtykulowyZNumeru(numer_artykulu) if((((dane==2)or(dane==3))and(artykul=="")and(numer_artykulu==numer))or(((dane==1)or(dane==3))and(artykul~="")and(numer_artykulu==numer)))then if(s==ktory)then if(artykul~="")then local wartosc=(not czy_nazwa) and artykul or (nazwa or artykul); return wartosc; else return rozdzial; end; else s=s+1; end; end; end; local numer_artykulu=NumerArtykulu(tab_numer,tab_poziomowo); if((not nazwa_spisu)or(not numer_spisu) or ((not glowny_spis_tresci_lub_rozdzial_ksiazki)and((tonumber(numer_artykulu) or 1)>1)) or((glowny_spis_tresci_lub_rozdzial_ksiazki)and((numer_spisu or 1)>1)) )then local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; elseif((numer_spisu)and(numer_spisu==1))then if(glowny_spis_tresci_lub_rozdzial_ksiazki)then local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; else local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu); tab_numer_artykulu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu); local numer_artykulu=table.concat(tab_numer_artykulu,"."); local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; else local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci; if((not tab_spis)or(not tab_spis[nazwa_spisu]))then if(not args_kopia)then local args=parametry_modul.PobierzArgsParametry(frame,true); args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args); end; args_kopia[1]=nazwa_spisu; numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki); if(not tab_spis)then tab_spis={};end; tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,}; else local tab_element=tab_spis[nazwa_spisu]; numer_spisu_tresci=tab_element[1]; glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2]; end; if(not numer_spisu_tresci)then local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; local tab_numer_artykulu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu_tresci); tab_numer_artykulu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) or tab_numer_artykulu; local numer_artykulu=table.concat(tab_numer_artykulu,"."); local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; end; end; local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; end; p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki,kodowanie_nie_json) local tab_dane_ksiazki=nil; local s=1; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local args_kopia; local tab_spis; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local pierwszy_spis_tresci=nil; local artykul_spisowy=nil; local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url) if((artykul_spisu)and(nazwa_spisu))then if((artykul_spisu~=nazwa_spisu))then if(not artykul_spisowy)then return false;else return true;end; elseif((not artykul_spisowy)and(artykul_spisu==nazwa_spisu))then artykul_spisowy=true; end; end; if(not tab_dane_ksiazki)then tab_dane_ksiazki={};end; if(not tab_dane_ksiazki[rozdzial])then tab_dane_ksiazki[rozdzial]={};end; local tab_rozdzial=tab_dane_ksiazki[rozdzial]; local numer_rozdzialu=tab_numer and table.concat(tab_numer,".") or ""; if((nazwa_spisu)and(numer_spisu)and(not glowny_spis_tresci_lub_rozdzial_ksiazki)and(numer_rozdzialu~=""))then local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci; if((numer_spisu)and(numer_spisu==1))then if(not glowny_spis_tresci_lub_rozdzial_ksiazki)then local tab_numer_rozdzialu=tab_numer;--ZamienNumerArtykuluNaTabele(numer_rozdzialu); tab_numer_rozdzialu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu); numer_rozdzialu=table.concat(tab_numer_rozdzialu,"."); end; else if((not tab_spis)or(not tab_spis[nazwa_spisu]))then if(not args_kopia)then local args=parametry_modul.PobierzArgsParametry(frame,true); args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args); end; args_kopia[1]=nazwa_spisu; numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki); if(not tab_spis)then tab_spis={};end; tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,}; else local tab_element=tab_spis[nazwa_spisu]; numer_spisu_tresci=tab_element[1]; glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2]; end; if(numer_spisu_tresci)then local tab_numer_rozdzialu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_rozdzialu,numer_spisu_tresci); tab_numer_rozdzialu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu) or tab_numer_rozdzialu; numer_rozdzialu=table.concat(tab_numer_rozdzialu,"."); end; end; elseif((not pierwszy_spis_tresci)and(nazwa_spisu)and(numer_spisu)and(glowny_spis_tresci_lub_rozdzial_ksiazki)and(numer_rozdzialu~=""))then local czy_spis_tresci=tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial]; if(czy_spis_tresci)then pierwszy_spis_tresci=true; local tab_numer_rozdzialu=ZamienNumerArtykuluNaTabele(numer_rozdzialu); tab_numer_rozdzialu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu); numer_rozdzialu=table.concat(tab_numer_rozdzialu,"."); end; end; if(not tab_rozdzial[numer_rozdzialu])then tab_rozdzial[numer_rozdzialu]={}; end; local tab_numer_rozdzialu=tab_rozdzial[numer_rozdzialu]; if(not tab_numer_rozdzialu[artykul])then tab_numer_rozdzialu[artykul]={}; end; local tab_artykul=tab_numer_rozdzialu[artykul]; local numer_artykulu=tab_poziomowo and table.concat(tab_poziomowo,".") or ""; if(not tab_artykul[numer_artykulu])then tab_artykul[numer_artykulu]={}; end; local tab_numer_artykulu=tab_artykul[numer_artykulu]; local czy_tabelka=parametry_modul.TypeTable(przekierowanie); ---- table.insert(tab_numer_artykulu,{["przekierowanie"]=czy_tabelka and przekierowanie[1] or ((not czy_tabelka) and przekierowanie or nil),["kod języka"]=czy_tabelka and przekierowanie[3] or nil,["kod projektu"]=czy_tabelka and przekierowanie[4] or nil,["pełna nazwa książki"]=(czy_tabelka and przekierowanie[2]) and nazwy_modul["NazwaModułu"](przekierowanie[2][1],przekierowanie[2][2],przekierowanie[2][3],"") or nil,["link"]=czy_tabelka and przekierowanie[5] or nil,["nazwa"]=nazwa,["spis treści"]=czy_nienilowy_rozdzial,["czy w podręczniku"]=(((artykul~="")or(numer_artykulu~="")) and ((czy_artykuly_podrecznikowe) and true or nil) or nil),["dodane"]=czy_dodane,["numer"]=s,["inna książka"]=czy_inna_ksiazka,["url"]=czy_url,}); ---- s=s+1; return false; end; PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; end; return p; lkyry0j1dmf0iqs93zc4lsbfq11pqy6 547827 547826 2026-07-20T03:10:02Z Persino 2851 Anulowano wersję [[Special:Diff/547826|547826]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]]) 547827 Scribunto text/plain local p={}; local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame); stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki); local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki); if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end; local args=stronicowyparser_potrzebne_modul:Args(frame); local parametry_modul=require("Module:Parametry"); local szablonowe_modul=require("Module:Szablonowe"); local naglowek=parametry_modul.CzyTak(args["nagłówek"]); local nie_wszystkie=parametry_modul.CzyTak(args["nie wszystkie"]); ---- local dane=tonumber(args["dane"]); if((not dane)or((dane~=1)and(dane~=2)and(dane~=3)))then dane=1;end; ---- local artykul_spisu=args["spis"]; artykul_spisu=artykul_spisu and parametry_modul["Odstępy"]{[1]=artykul_spisu,[2]="tak",} or nil; local tab_artykul=(not naglowek)and {} or nil; local poziomowo=parametry_modul.CzyTak(args["poziomowo"]); local tab_poziomowo={}; local tab_poziomowo_1={}; local tab_poziomowo_2={}; local html_modul=require("Module:Html"); ---- local function ParametrySzablonuPobierania() if(not zbieraj_dane_wszystkie)then local pierwszy_parametr_szablonu=nil;local czy_nazwa=nil; if(not typ)then pierwszy_parametr_szablonu=args[1] and ((not naglowek) and mw.ustring.gsub(html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](args[1]),true),"^([^#]*)#(.*)$","%1") or html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](args[1]),true)) or "Przykładowy artykuł"; else pierwszy_parametr_szablonu=args[1] and ((not poziomowo) and (tonumber(args[1]) or 1) or args[1]) or ((not poziomowo) and 1 or "1"); czy_nazwa=parametry_modul.CzyTak(args["nazwa"]); end; return function() return {pierwszy_parametr_szablonu,czy_nazwa,dane,}; end; end; end; local pierwszy_parametr_szablonu=ParametrySzablonuPobierania(); ---- local ktory=(tonumber(args["który"]) or 1); local i=(not poziomowo) and 1 or nil; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu; local tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu); local odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu); setmetatable(tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); setmetatable(tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); local HNumerPoziomow_4=nil; local HNumerPoziomow_3=nil local HNumerPoziomow_2=nil; local HNumerPoziomow_1=nil; local HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local HNumerPoziomowNaglowkow_1=nil; local HNumerPoziomowNaglowkow_2=nil; local tab_numer=poziomowo and {} or nil; local tab_numer_baza_spis_tresci=nil; local tab_numer_3=nil local tab_numer_4=nil;--poziomowo and {} or nil; local spis=false; local pierwszy_dodatni_naglowek=nil; local pierwszy_ujemny_naglowek=nil; local poprzedni_poziom_znakowy_rozdzialu=nil; local poprzedni_tab_poziomowo=nil; local poziom_pierwszego_dodatniego_naglowka=0; local poziom_pierwszego_ujemnego_naglowka=0; local poziom_zerowego_naglowka=0; local poziom_srednikowego_naglowka=0; local ostatni_rozdzial_dodatni=nil; local ostatni_rozdzial_centrowany=nil; local pierwszy_rozdzial_dodatni=nil; local glowny_dodatni_rozdzial=nil; local glowny_ujemny_rozdzial=nil; local spis_tresci=nil; local poziom_pierwszego_ujemnego_spisu_tresci=nil; local ostatni_poczatek_artykulu=nil; local pierwszy_rowny_rozdzial=nil; local rozdzial; local czy_pierwszy_nilowy=nil; local czy_nienilowy_rozdzial=nil; local czy_pierwszy_nilowy_rozdzial=nil; local czy_ostatni_rozdzial_jest_centrowany=nil; local glowny_spis_tresci_lub_rozdzial_ksiazki=nil; local poprz_poziom_rozdzialu_lub_artykulu=nil; local poprz_numeracji_rozdzialu_lub_artykulu=nil; local poprz_numer_rozdzialu_lub_artykulu=nil; local poprz_czysty_poziom_rozdzialu_lub_artykulu=nil; local poprz_ujemnego_rozdzialu_dodatniego_rozdzialu=nil; local staly_dodatek_rozdzialu=0; ---- local poziom_spisu_tresci_dodatek=nil; ---- local odejmnij_od_dwukropka=0; ----- local czy_w_trakcie_dwukropkowania=nil; ----- local numer_poprz=nil; ---- local tab_lista_artykulow_w_ksiazce2=tab_lista_artykulow_w_ksiazce; tab_lista_artykulow_w_ksiazce={}; local function TabLista(tab_lista) local max_ile=0; for name,value in pairs(tab_lista)do max_ile=math.max(max_ile,name); end; local function Iterator(tab_lista) local p2=0; local s=0; local pp=0; local function InneTablica(numer) local p1=0; return function() if((tab_lista[numer])and(tab_lista[numer][p1+1])and(tab_lista[numer][p1+1][6]==pp))then p1=p1+1; pp=pp+1; return s,tab_lista[numer][p1]; end; end; end; local function WszystkieInneTablica() local tab={}; for i=1,max_ile-2,1 do tab[i]=InneTablica(i+2); end; return function() for i=1,max_ile-2,1 do local wartosc,tab_artykul=tab[i](); if((wartosc)and(tab_artykul))then return wartosc,tab_artykul; end; end; end; end; --local p1=0; --local p2=0; --local s=0; local iter_inne_tablice=WszystkieInneTablica(); return function() s=s+1; local wartosc,tab_artykul=iter_inne_tablice(); if((wartosc)and(tab_artykul))then return wartosc,tab_artykul; elseif((tab_lista[2])and(tab_lista[2][p2+1]))then p2=p2+1; pp=pp+1; return s,tab_lista[2][p2]; else return nil; end; end; end; local tab={}; local iter=Iterator(tab_lista); for s,artykul_w_bazie in iter do tab[s]=artykul_w_bazie; end; return tab; end; for s,tab_lista in ipairs( tab_lista_artykulow_w_ksiazce2)do if(not tab_lista_artykulow_w_ksiazce[s])then tab_lista_artykulow_w_ksiazce[s]={};end; tab_lista_artykulow_w_ksiazce[s][1]=tab_lista[1]; tab_lista_artykulow_w_ksiazce[s][2]=TabLista(tab_lista); end; ---- local function ToNumberPoziomArtykulu(poziom_artykulu) local numer_artykulu=tonumber(poziom_artykulu); local numer_dodatkowy=((numer_artykulu)and(numer_artykulu>0)) and 0 or 1; return (numer_artykulu or 0),numer_dodatkowy; end; local function ZerowyArtykul(tab_lista_2,p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka,poziom_zerowego_artykulu_poprz) if((not w_rozdziale) and(poziom_zerowego_artykulu>0) and(poziom_zerowego_naglowka>0))then if(p>1)then local czy_jest_nast=tab_lista_2[p-1]; if(czy_jest_nast)then local numer=tonumber(tab_lista_2[p-1][2][1]); if(numer>0)then poziom_zerowego_artykulu=0; end; else poziom_zerowego_artykulu=0; end; end; elseif(poziom_zerowego_artykulu==0)then poziom_zerowego_artykulu=poziom_zerowego_artykulu_poprz; end; return poziom_zerowego_artykulu; end; local function OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka) if((not czy_w_trakcie_dwukropkowania)and(mw.ustring.match(poziom_poczatku_artykulu,"^:")))then odejmnij_od_dwukropka=math.max((#poziom_poczatku_artykulu-(numer_poprz or 0)-1),0); czy_w_trakcie_dwukropkowania=true; elseif((czy_w_trakcie_dwukropkowania)and(not mw.ustring.match(poziom_poczatku_artykulu,"^:")))then odejmnij_od_dwukropka=0; czy_w_trakcie_dwukropkowania=nil; end; if(odejmnij_od_dwukropka>0)then poziom_artykulu=poziom_artykulu-odejmnij_od_dwukropka; if(poziom_artykulu<1)then poziom_artykulu=1; end; end; return poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania; end; local function PoziomNumeracji(numeracja_artykulu) if(numeracja_artykulu)then numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"^%s*%.*(.-)%.*%s*$","%1"); numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"%s+",""); numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"%.+","."); local tab_numeracja_artykulu=numeracja_artykulu and mw.text.split(numeracja_artykulu,"%s*%.%s*",false); local poziom_numeracji_artykulu=((numeracja_artykulu~="") and (#tab_numeracja_artykulu) or 0); return poziom_numeracji_artykulu; end; return 0; end; ----- local function UzyskajArtykul(artykul,pomin_link) local artykul=(not naglowek)and stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul,pomin_link) or stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(artykul,true,pomin_link); return artykul; end; ---- local nazwa_spisu=nil;local numer_spisu=nil; local prawdziwy_poziom_rozdzialu_poprz=nil; for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do local poziom_rozdzialu; local poziom_poczatku_rozdzialu=nil; local poziom_znakowy_rozdzialu=nil; local prawdziwy_poziom_rozdzialu=nil; local poziom_naglowka=nil; local poziom_naglowka_bez_poprawki=nil; local numer_rozdzialu=nil; local tab_numer_zapasowe=nil; local poziom_numeracji_rozdzialu=nil; local czy_jest_teraz_spis_tresci=nil; local czy_rozdzial_centrowany=nil; ----- local zbieraj_dane=true; ----- czy_nienilowy_rozdzial=tab_lista[1][2][1]; poziom_rozdzialu=czy_nienilowy_rozdzial or 0; ---- rozdzial=tab_lista[1][1]; ---- local czy_rozdzial_spisu=false; if((m==1)and(not numer_spisu)and(not nazwa_spisu))then if(czy_nienilowy_rozdzial==nil)then local spis=tab_lista[1]["spis"]; if(spis)then nazwa_spisu=spis[1]; numer_spisu=spis[2]; czy_rozdzial_spisu=true; pierwszy_dodatni_naglowek=false; pierwszy_ujemny_naglowek=false; glowny_spis_tresci_lub_rozdzial_ksiazki=false; end; end; elseif((m>2)and(numer_spisu)and(nazwa_spisu))then if(poziom_rozdzialu==1)then local spis=tab_lista[1]["spis"]; if(spis)then nazwa_spisu=spis[1]; numer_spisu=spis[2]; czy_rozdzial_spisu=true; pierwszy_dodatni_naglowek=false; pierwszy_ujemny_naglowek=false; glowny_spis_tresci_lub_rozdzial_ksiazki=false; end; end; end; ----- local function PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu) if(not poprz_czysty_poziom_rozdzialu_lub_artykulu)then staly_dodatek_rozdzialu={poziom_numeracji_rozdzialu,}; return poziom_naglowka,staly_dodatek_rozdzialu; end; if(poziom_naglowka==poprz_czysty_poziom_rozdzialu_lub_artykulu)then local poziom_numeracji=poziom_numeracji_rozdzialu-(staly_dodatek_rozdzialu[1] or 0); return poziom_naglowka+((poziom_numeracji>=0)and poziom_numeracji or 0),staly_dodatek_rozdzialu; elseif(poziom_naglowka~=poprz_czysty_poziom_rozdzialu_lub_artykulu)then staly_dodatek_rozdzialu={poziom_numeracji_rozdzialu,}; return poziom_naglowka,staly_dodatek_rozdzialu; end; end; local function PoziomNumerNaglowkaStalyDodatekRozdzialu(staly_dodatek_rozdzialu,poziom_naglowka,poprz_czysty_poziom_rozdzialu_lub_artykulu) if(parametry_modul.TypeTable(staly_dodatek_rozdzialu))then return 0; elseif(poziom_naglowka>poprz_czysty_poziom_rozdzialu_lub_artykulu)then local dodatek=(parametry_modul.TypeTable(staly_dodatek_rozdzialu) and staly_dodatek_rozdzialu[2] or 0); return dodatek; elseif(poziom_naglowka<poprz_czysty_poziom_rozdzialu_lub_artykulu)then local dodatek=(parametry_modul.TypeTable(staly_dodatek_rozdzialu) and staly_dodatek_rozdzialu[1] or 0); return dodatek; end; end; local function PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,poziom_rozdzialu,poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami) local function JedenDwa(poziom_poczatku_rozdzialu,poziom_poczatku_artykulu) return ((poziom_poczatku_artykulu)and(poziom_poczatku_rozdzialu) and(((mw.ustring.match(poziom_poczatku_rozdzialu,"^*")) and((mw.ustring.match(poziom_poczatku_artykulu,"^:")) or(mw.ustring.match(poziom_poczatku_artykulu,"^#")) ) )or((mw.ustring.match(poziom_poczatku_rozdzialu,"^#"))and(mw.ustring.match(poziom_poczatku_artykulu,"^:"))))); end; if(JedenDwa(poziom_poczatku_rozdzialu,poziom_poczatku_artykulu))then local roznica=poziom_rozdzialu-poziom_artykulu; if(roznica>=0)then staly_poziom_rozdzialu_z_artykulami=roznica+1; else staly_poziom_rozdzialu_z_artykulami=0; end; return (poziom_artykulu+staly_poziom_rozdzialu_z_artykulami),staly_poziom_rozdzialu_z_artykulami; elseif(JedenDwa(poziom_poczatku_artykulu,poziom_poczatku_rozdzialu))then staly_poziom_rozdzialu_z_artykulami=0; elseif(#poziom_poczatku_artykulu==0)then staly_poziom_rozdzialu_z_artykulami=0; end; return (poziom_artykulu+(staly_poziom_rozdzialu_z_artykulami or 0)),staly_poziom_rozdzialu_z_artykulami; end; local function CzyWliczacBezPoziomowo(p,i) if(naglowek)then return true;end; local tab=tab_lista[2]; if(not tab)then return false;end; if(p==i)then return true;end; local tab_artykul2={}; for k=p+1,i,1 do ----- local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab[k][1]); local artykul=czy_table_baza_artykulu and tab[k][1][1] or tab[k][1]; artykul=UzyskajArtykul(artykul); ----- if(k==i)then if((tab_artykul[artykul])or(tab_artykul2[artykul]))then return false; else return true; end; else tab_artykul2[artykul]=true; end; end; return false; end; local function IleNajblizejDalejBezPoziomowo(p) if(naglowek)then return (p+1);end; local tab=tab_lista[2]; if(not tab)then return (p+1);end; local tab_artykul2={}; local i=p+1; while(true)do if(not tab[i])then return i;end; ----- local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab[i][1]); local artykul=czy_table_baza_artykulu and tab[i][1][1] or tab[i][1]; artykul=UzyskajArtykul(artykul); ----- if((not tab_artykul[artykul])and(not tab_artykul2[artykul]))then return i; end; tab_artykul2[artykul]=true; i=i+1; end; return i; end; ---- local function AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulowa,czy_rozdzial,__FUNKCJA) local poziom_zerowego_naglowka_temp=poziom_zerowego_naglowka or 0; local poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka or 0; local staly_dodatek_artykulu=0; --local poprz_poziom_rozdzialu_lub_artykulu=poziom_naglowka; --local poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_naglowka_bez_poprawki; local staly_dodatek_rozdzialu_temp=staly_dodatek_rozdzialu or 0; local poczatek_poprz=nil; local ostatni_rozdzial_dodatni_temp=ostatni_rozdzial_dodatni; local ostatni_rozdzial_centrowany_temp=ostatni_rozdzial_centrowany; local poziom_zerowego_artykulu=0; local staly_poziom_rozdzialu_z_artykulami=0; local ostatni_artykul_w_rozdziale=nil; local czy_dwukropek=nil; local czy_rozdzial_centrowany_temp=nil; ---- local odejmnij_od_dwukropka=0; local czy_w_trakcie_dwukropkowania=nil; local poziom_znakowy_rozdzialu=tab_lista[1][2][1] or 0; local poziom_rozdzialu=math.abs(poziom_znakowy_rozdzialu); local numer_poprz=(poziom_znakowy_rozdzialu<0)and poziom_rozdzialu or nil; for p,artykul_w_bazie in ipairs(tab_lista_artykulowa)do if((czy_rozdzial and (p>m)) or (not czy_rozdzial))then if((not czy_rozdzial) and (CzyWliczacBezPoziomowo(1,p)) or czy_rozdzial)then local rozdzial=nil; local poziom_artykulu; if(czy_rozdzial)then artykul_w_bazie=artykul_w_bazie[1]; rozdzial=artykul_w_bazie[1]; czy_rozdzial_centrowany_temp=artykul_w_bazie[2][4]; poziom_artykulu=artykul_w_bazie[2][1]; if(poziom_artykulu==1)then local spis=artykul_w_bazie["spis"]; if(spis)then local nazwa_spisu_temp=spis[1]; local numer_spisu_temp=spis[2]; if((nazwa_spisu_temp)and(numer_spisu_temp))then return; end; end; end; else poziom_artykulu=artykul_w_bazie[2][1]; end; local czy_dwukropek_aktualnie=nil; if((czy_rozdzial)and(rozdzial)and(poziom_artykulu)and(poziom_artykulu==0))then czy_dwukropek_aktualnie=mw.ustring.match(rozdzial,":%s*$") czy_dwukropek=czy_dwukropek_aktualnie or czy_dwukropek; end; local poziom_znakowy_artykulu=poziom_artykulu; poziom_artykulu=math.abs(poziom_artykulu); local poziom_poczatku_artykulu=artykul_w_bazie[2][2]; ---- if((not czy_rozdzial)or((czy_rozdzial)and(poziom_znakowy_artykulu<0)))then poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka); end; ---- local w_rozdziale=(not czy_rozdzial) and artykul_w_bazie[2][4] or nil; if((not czy_rozdzial)and(not w_rozdziale))then local czy_poczatek_rozdzialu=(IleNajblizejDalejBezPoziomowo(p-1)>IleNajblizejDalejBezPoziomowo(0)); local __poziom_poczatku_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_poczatku_rozdzialu or poczatek_poprz; local __poziom_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_rozdzialu or poziom_artykulu; poziom_artykulu,staly_poziom_rozdzialu_z_artykulami=PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,__poziom_rozdzialu,__poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami); end; local poziom_srednikowego_naglowka_srednik=0; local czy_artykul_srednik; local poziom_srednikowego_naglowka_srednik_temp; if(czy_rozdzial)then if(poziom_znakowy_artykulu)then if(poziom_znakowy_artykulu==0)then poziom_zerowego_naglowka_temp=1; elseif(poziom_znakowy_artykulu>0)then poziom_zerowego_naglowka_temp=0; poziom_srednikowego_naglowka_temp=0; ostatni_rozdzial_dodatni_temp=(not czy_rozdzial_centrowany_temp) and ostatni_rozdzial_dodatni_temp or nil; czy_dwukropek=nil; else poziom_srednikowego_naglowka_srednik_temp=mw.ustring.match(poziom_poczatku_artykulu,"^;+.*$"); if(poziom_srednikowego_naglowka_srednik_temp)then poziom_srednikowego_naglowka_srednik=#poziom_srednikowego_naglowka_srednik_temp; poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka_srednik; end; end; end; else poziom_srednikowego_naglowka_srednik_temp=mw.ustring.match(poziom_poczatku_artykulu,"^;+.*$"); if(poziom_srednikowego_naglowka_srednik_temp)then poziom_srednikowego_naglowka_srednik=#poziom_srednikowego_naglowka_srednik_temp; poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka_srednik; czy_artykul_srednik=true; end; end; if((czy_rozdzial)and(poziom_znakowy_artykulu>0))then ostatni_rozdzial_dodatni_temp=0; ostatni_rozdzial_centrowany_temp=w_rozdziale and 0 or ostatni_rozdzial_centrowany_temp; end; local id=(not czy_rozdzial)and artykul_w_bazie[4] or nil; local poziom_zerowego_artykulu_aktualny=poziom_artykulu; local poziom_artykulu_zerowy; if(not czy_rozdzial)then local poziom_zerowego_artykulu_poprz=poziom_zerowego_artykulu; poziom_artykulu,poziom_zerowego_artykulu=ToNumberPoziomArtykulu(poziom_artykulu); poziom_artykulu_zerowy=poziom_artykulu; ---- poziom_zerowego_artykulu=ZerowyArtykul(tab_lista_artykulowa,p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka_temp,poziom_zerowego_artykulu_poprz); ---- poziom_artykulu=poziom_artykulu+poziom_zerowego_artykulu; end; if((not czy_rozdzial)and(poziom_znakowy_rozdzialu<0)and(rozdzial==""))then poziom_artykulu=poziom_artykulu+poziom_naglowka_bez_poprawki; else --- if(not czy_rozdzial)then poziom_zerowego_naglowka_temp=((not w_rozdziale)and(ostatni_artykul_w_rozdziale)and(poziom_zerowego_naglowka_temp>0)and(poziom_zerowego_artykulu_aktualny==0)) and (poziom_zerowego_naglowka_temp-1) or poziom_zerowego_naglowka_temp; end; poziom_artykulu=(((czy_rozdzial)and(--[[((ostatni_rozdzial_centrowany_temp or 0)>0)or]](poziom_znakowy_artykulu<=0))or(not czy_rozdzial))and ((ostatni_rozdzial_centrowany_temp or 0)+(ostatni_rozdzial_dodatni_temp or 0)+(poziom_zerowego_naglowka_temp+(((poziom_znakowy_artykulu)and(poziom_znakowy_artykulu==0)and(czy_dwukropek)and(not czy_dwukropek_aktualnie))and 1 or 0)+poziom_srednikowego_naglowka_temp)) or 0)+(((czy_rozdzial)and(poziom_znakowy_artykulu>0)and(not czy_rozdzial_centrowany_temp))and ostatni_rozdzial_centrowany_temp or 0)+((not poziom_srednikowego_naglowka_srednik_temp)and poziom_artykulu or 0)--[[+staly_dodatek_rozdzialu_temp]]+(id and 1 or 0); ----- if(czy_rozdzial)then if(poziom_znakowy_artykulu==0)then if(not czy_dwukropek_aktualnie)then poziom_zerowego_naglowka_temp=1+(czy_dwukropek and 1 or 0); else poziom_zerowego_naglowka_temp=2; end; end; end; end; if(not czy_rozdzial)then if(w_rozdziale)then ostatni_artykul_w_rozdziale=true else ostatni_artykul_w_rozdziale=false;end; end; if((czy_rozdzial)and(poziom_znakowy_artykulu>0))then if(w_rozdziale)then ostatni_rozdzial_dodatni_temp=nil; ostatni_rozdzial_centrowany_temp=poziom_znakowy_artykulu; else ostatni_rozdzial_dodatni_temp=poziom_znakowy_artykulu; end; end; poczatek_poprz=poziom_poczatku_artykulu; poziom_artykulu=poziom_artykulu+((czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); local wynik=__FUNKCJA(poziom_artykulu,poziom_naglowka_bez_poprawki,poziom_znakowy_artykulu,w_rozdziale,ostatni_rozdzial_centrowany_temp,{poziom_srednikowego_naglowka_temp,poziom_srednikowego_naglowka_srednik,},poziom_zerowego_naglowka_temp,poziom_artykulu_zerowy); ostatni_rozdzial_dodatni_temp=(czy_rozdzial_centrowany_temp) and poziom_artykulu or ostatni_rozdzial_dodatni_temp; if(not parametry_modul.TypeNil(wynik))then return wynik;end; local numer_baza=artykul_w_bazie[2][1]; local function __tonumber(liczba) if(czy_rozdzial)then if(liczba<0)then liczba=(liczba and (-liczba) or nil); return liczba; end; else return liczba; end; return nil; end; numer_poprz=(not w_rozdziale)and __tonumber(numer_baza) or ((w_rozdziale)and numer_poprz or nil); end; end; end; end; local function IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista_artykulowa,bez_sprawdzania) local ile_w_rozdziale=0; for s=1,#tab_lista_artykulowa[2],1 do if(bez_sprawdzania or CzyWliczacBezPoziomowo(1,s))then local w_rozdziale=tab_lista_artykulowa[2][s][2][4]; if(w_rozdziale)then ile_w_rozdziale=ile_w_rozdziale+1; else break; end; end; end; return ile_w_rozdziale end; local function KoniecSpisuTresci(poziom_naglowka_bez_poprawki,znak_poziom,czy_srednik) if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0))then local function UsunElementySpisTresci(tab_numer_temp) if(not tab_numer_temp)then return;end; local tab_numer_prawd;local HNumerPoziomow_prawd;local HNumerPoziomowNaglowkow_prawd; for i=#tab_numer_temp,1,-1 do local tab_naglowka=tab_numer_temp[i]; if((tab_naglowka[4]>=poziom_naglowka_bez_poprawki)or((tab_naglowka[5]<0)and((znak_poziom>0)or(czy_srednik))))then tab_numer_prawd=tab_naglowka[1]; HNumerPoziomow_prawd=tab_naglowka[2]; HNumerPoziomowNaglowkow_prawd=tab_naglowka[3] table.remove(tab_numer_temp,i); else break; end; end; if(tab_numer_prawd)then tab_numer=tab_numer_prawd; HNumerPoziomow=HNumerPoziomow_prawd; if(HNumerPoziomowNaglowkow_prawd)then HNumerPoziomowNaglowkow=HNumerPoziomowNaglowkow_prawd;end; return true; end; return nil; end; if(znak_poziom>0)then if(not UsunElementySpisTresci(tab_numer_baza_spis_tresci))then return;end; if(#tab_numer_baza_spis_tresci==0)then glowny_spis_tresci_lub_rozdzial_ksiazki=false; end; tab_poziomowo={}; end; end; end; ---- ----- tab_poziomowo={}; local rozdzial_bez_dwukropka=mw.ustring.match(rozdzial,"^%s*(.-)%s*:[%s:]*$") or rozdzial; czy_jest_teraz_spis_tresci=((m==1)and (czy_nienilowy_rozdzial and tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial_bez_dwukropka] or ((not czy_nienilowy_rozdzial)and true or false)) or ((m>1)and tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial_bez_dwukropka] or false)); poziom_spisu_tresci_dodatek=(czy_jest_teraz_spis_tresci and ((poziom_rozdzialu==0)and 1 or 0) or (poziom_spisu_tresci_dodatek or 0)); local czy_nie_ten_rozdzial; if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0))then czy_nie_ten_rozdzial=false; glowny_spis_tresci_lub_rozdzial_ksiazki=true; else glowny_spis_tresci_lub_rozdzial_ksiazki=false; if((not czy_jest_teraz_spis_tresci)and(nie_wszystkie))then czy_nie_ten_rozdzial=tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu[rozdzial_bez_dwukropka]; end; end; if((m==1)and(not czy_nienilowy_rozdzial))then czy_pierwszy_nilowy=true; czy_pierwszy_nilowy_rozdzial=true; end; if(not czy_nie_ten_rozdzial)then if(poziomowo)then prawdziwy_poziom_rozdzialu=poziom_rozdzialu; poziom_poczatku_rozdzialu=tab_lista[1][2][2]; local numeracja_rozdzialu=tab_lista[1][2][3]; poziom_numeracji_rozdzialu=PoziomNumeracji(numeracja_rozdzialu); czy_rozdzial_centrowany=tab_lista[1][2][4]; ---- local czy_z_dwukropkiem=nil; ---- if(poziom_rozdzialu<0)then poziom_rozdzialu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(-poziom_rozdzialu,poziom_poczatku_rozdzialu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka); numer_poprz=-tab_lista[1][2][1] or 0; poziom_rozdzialu=-poziom_rozdzialu; else numer_poprz=nil; czy_w_trakcie_dwukropkowania=nil; odejmnij_od_dwukropka=0; end; local czy_sredniki; ----- poprzedni_poziom_znakowy_rozdzialu=poziom_znakowy_rozdzialu; poziom_znakowy_rozdzialu=poziom_rozdzialu; poziom_rozdzialu=math.abs(poziom_rozdzialu); local poprzedni_tab_poziomowo_temp=poprzedni_tab_poziomowo; if(poziom_znakowy_rozdzialu>0)then poziom_naglowka=poziom_rozdzialu+(czy_rozdzial_centrowany and 0 or (ostatni_rozdzial_centrowany or 0)); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_spisu_tresci_dodatek=0; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); poziom_pierwszego_ujemnego_spisu_tresci=nil; ---- ostatni_poczatek_artykulu=nil; pierwszy_rowny_rozdzial=nil; ---- if((m>2)or(not czy_pierwszy_nilowy))then poprzedni_tab_poziomowo=nil; end; poziom_zerowego_naglowka=0; poziom_srednikowego_naglowka=0; if(glowny_ujemny_rozdzial)then HNumerPoziomow=HNumerPoziomow_4; HNumerPoziomow_4=nil; tab_numer=tab_numer_4; poziom_pierwszego_ujemnego_naglowka=nil; glowny_ujemny_rozdzial=nil; ---- ---- if((poprz_ujemnego_rozdzialu_dodatniego_rozdzialu)and(poprz_ujemnego_rozdzialu_dodatniego_rozdzialu>0))then pierwszy_ujemny_naglowek=nil; end; end; KoniecSpisuTresci(poziom_naglowka_bez_poprawki,1); if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0)and(not spis_tresci))then numer_rozdzialu=HNumerPoziomow(poziom_naglowka,1); spis_tresci=true; pierwszy_rozdzial_dodatni=1; else if(not pierwszy_rozdzial_dodatni)then pierwszy_rozdzial_dodatni=1; numer_rozdzialu=HNumerPoziomow(poziom_naglowka,1); else numer_rozdzialu=HNumerPoziomow(poziom_naglowka); end; end; if(czy_rozdzial_centrowany)then ostatni_rozdzial_dodatni=nil; ostatni_rozdzial_centrowany=poziom_rozdzialu; else ostatni_rozdzial_dodatni=poziom_rozdzialu; end; elseif(poziom_znakowy_rozdzialu<0)then czy_sredniki=mw.ustring.match(poziom_poczatku_rozdzialu,"^(;+)"); if(czy_sredniki)then poziom_zerowego_naglowka=0; ---- ostatni_poczatek_artykulu=nil; pierwszy_rowny_rozdzial=nil; ---- if(glowny_ujemny_rozdzial)then HNumerPoziomow=HNumerPoziomow_4; HNumerPoziomow_4=nil; tab_numer=tab_numer_4; poziom_pierwszego_ujemnego_naglowka=nil; glowny_ujemny_rozdzial=nil; ---- ---- if((poprz_ujemnego_rozdzialu_dodatniego_rozdzialu)and(poprz_ujemnego_rozdzialu_dodatniego_rozdzialu>0))then pierwszy_ujemny_naglowek=nil; end; end; ---- poziom_srednikowego_naglowka=poziom_rozdzialu; poziom_naglowka=(ostatni_rozdzial_centrowany or 0) + (ostatni_rozdzial_dodatni or 0) + poziom_zerowego_naglowka + poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); numer_rozdzialu=HNumerPoziomow(poziom_naglowka); poziom_znakowy_rozdzialu=-poziom_srednikowego_naglowka; poziom_rozdzialu=poziom_srednikowego_naglowka; KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1,true); else if(not pierwszy_rowny_rozdzial)then if((ostatni_poczatek_artykulu) and(#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu) and(mw.ustring.match(ostatni_poczatek_artykulu,"^*")) and(mw.ustring.match(poziom_poczatku_rozdzialu,"^:")) )then poziom_rozdzialu=poziom_rozdzialu+1; poziom_znakowy_rozdzialu=-poziom_rozdzialu; pierwszy_rowny_rozdzial=1; poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); else poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); end; else if((not ostatni_poczatek_artykulu)or((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^*"))))then pierwszy_rowny_rozdzial=0; elseif((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^:")))then pierwszy_rowny_rozdzial=1; elseif((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^#")))then pierwszy_rowny_rozdzial=nil; end; poziom_rozdzialu=poziom_rozdzialu+(pierwszy_rowny_rozdzial or 0); poziom_znakowy_rozdzialu=-poziom_rozdzialu; poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); end; ---- KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1); ---- numer_rozdzialu=HNumerPoziomow(poziom_naglowka); local numer_rozdzialu_dodatniego=HNumerPoziomowNaglowkow(0) or 0; if(numer_rozdzialu_dodatniego>=numer_rozdzialu)then numer_rozdzialu=HNumerPoziomow(poziom_naglowka,numer_rozdzialu_dodatniego+1); end; end; else if((m>1)or((m==1)and(not czy_pierwszy_nilowy)))then local poziom_zerowego_naglowka_temp=poziom_zerowego_naglowka; czy_z_dwukropkiem=mw.ustring.match(rozdzial,":%s*$"); local dodatek=((czy_z_dwukropkiem)and 1 or 0); poziom_zerowego_naglowka=1+((not czy_z_dwukropkiem)and ((poziom_zerowego_naglowka_temp==2) and 1 or 0) or 1); poziom_naglowka=1+(((not czy_z_dwukropkiem)and(poziom_zerowego_naglowka_temp==2))and 1 or 0)+ (ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0) + 0+poziom_srednikowego_naglowka; poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1); numer_rozdzialu=HNumerPoziomow(poziom_naglowka); poziom_znakowy_rozdzialu=-1; poziom_rozdzialu=1; else poziom_zerowego_naglowka=0; numer_rozdzialu=0; poziom_naglowka=(ostatni_rozdzial_centrowany or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; staly_dodatek_rozdzialu=0; end; end; if(poziom_znakowy_rozdzialu>0)then local numer=HNumerPoziomowNaglowkow(poziom_naglowka); elseif(poziom_znakowy_rozdzialu<0)then end; if(poziom_rozdzialu>0)then if(((czy_ostatni_rozdzial_jest_centrowany)and(ostatni_rozdzial_centrowany or 0)>0)and(#tab_numer>0)and(tab_numer[#tab_numer]==0)and(#tab_numer<=numer_rozdzialu))then tab_numer[#tab_numer]=nil; numer_rozdzialu=HNumerPoziomow(poziom_naglowka,((numer_rozdzialu>1)and(numer_rozdzialu-1) or 1)); czy_ostatni_rozdzial_jest_centrowany=nil; elseif(poprzedni_tab_poziomowo)then local lens=math.min(#poprzedni_tab_poziomowo,numer_rozdzialu-#tab_numer); local len_tab_numer=#tab_numer; local min_lens=math.min(#poprzedni_tab_poziomowo,lens); for i=1,min_lens,1 do tab_numer[len_tab_numer+i]=poprzedni_tab_poziomowo[i]; end; for i=min_lens+1,#tab_numer do tab_numer[len_tab_numer+i]=nil; end; end; if(#tab_numer<numer_rozdzialu)then for i=#tab_numer+1,numer_rozdzialu,1 do table.insert(tab_numer,1); end; elseif(#tab_numer>numer_rozdzialu)then for i=#tab_numer, numer_rozdzialu+1,-1 do table.remove(tab_numer,i); end; tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0) + 1; else tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0) + 1; end; end; local function CzyJestONumerzeMniejszymLubRownymPoziomieNizAktualnyRozdzial() if(poziom_rozdzialu==0)then return true;end; if(poziom_znakowy_rozdzialu>0)then local ile_w_rozdziale_w_naglowku_artykulow=IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista,true); return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_aktualnego_naglowka,poziom_naglowka,poziom_znakowy_naglowka,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(ile_w_rozdziale_w_naglowku_artykulow>0)then return true;end; if(poziom_znakowy_naglowka>0)then if(poziom_aktualnego_naglowka<=poziom_naglowka)then return true; end; end; end); elseif(((m==1) or(((m==2)and(czy_pierwszy_nilowy_rozdzial))or((tab_lista_artykulow_w_ksiazce[m-1]) and((tab_lista_artykulow_w_ksiazce[m-1][1][2][1] or 0)>0)and(tab_lista_artykulow_w_ksiazce[m-1][2])and(#tab_lista_artykulow_w_ksiazce[m-1][2]==IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista_artykulow_w_ksiazce[m-1],true))))) and(poziom_znakowy_rozdzialu<0))then local czy_artykuly=nil;local tak_wynik=nil; if(tab_lista[2])then local czy_w_rozdziale_artykuly=nil; local wynik=AnalizaArtykulowaLubRozdzialowa(tab_lista[2],nil,function(poziom_artykulu,poziom_naglowka,_,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(not w_rozdziale)then czy_artykuly=true; --[[if(((((not czy_z_dwukropkiem)and(czy_w_rozdziale_artykuly))or(poziom_artykulu-(poziom_zerowego_naglowka or 0)<=poziom_naglowka)or(poziom_artykulu-(poziom_srednikowego_naglowka[1] or 0)<=poziom_naglowka))and(poziom_artykulu_zerowy)and(poziom_artykulu_zerowy==0)and(poziom_zerowego_naglowka)and(poziom_zerowego_naglowka>0))and((m>2)or((m==2)and(not czy_pierwszy_nilowy_rozdzial))))then return true; end;]] if(poziom_artykulu<=poziom_naglowka)then return true; end; else czy_w_rozdziale_artykuly=true; end; end); tak_wynik=wynik; end; if((czy_artykuly)or(m==1))then local wynik=AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_aktualnego_naglowka,poziom_naglowka,poziom_znakowy_naglowka,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(poziom_znakowy_naglowka<=0)then if(poziom_aktualnego_naglowka<=poziom_naglowka)then --if((poziom_srednikowego_naglowka[2])and(poziom_srednikowego_naglowka[2]>0))then --return false; --else return true; --end; end; else if((m==1)and(poziom_znakowy_rozdzialu<0)and(poziom_znakowy_naglowka>0))then return true;end; return false; end end); if(wynik~=nil)then return wynik;end; if(tak_wynik~=nil)then return tak_wynik;end; return true; else return true; end; else return true; end; end; local function DodajNaSamPoczatek() local function ArtykulyNieWRozdziale() local ile=0; if(tab_lista[2])then for p,artykul_w_bazie in ipairs(tab_lista[2])do local w_rozdziale=artykul_w_bazie[2][4]; if(not w_rozdziale)then ile=ile+1; end; end; end; return ile; end; if((tab_lista_artykulow_w_ksiazce[m+1])and(ArtykulyNieWRozdziale()>0) and(( (poziom_znakowy_rozdzialu>0) and AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(poziom_znakowy_rozdzialu>0)then if(poziom_artykulu>poziom_naglowka)then return true; end; end; return false; end) )or( (poziom_znakowy_rozdzialu<0) and AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka_temp,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if((poziom_srednikowego_naglowka_temp[2])and(poziom_srednikowego_naglowka)and(poziom_srednikowego_naglowka_temp[2]>poziom_srednikowego_naglowka))then if(poziom_znakowy_rozdzialu<0)then if(poziom_artykulu>poziom_naglowka)then return true; end; end; end; return false; end) )) )then if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; table.insert(tab_numer,0); return true; else if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; return false; end; end; if((m==1)and(czy_pierwszy_nilowy)and(poziom_znakowy_rozdzialu==0))then if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; tab_numer={}; elseif((czy_jest_teraz_spis_tresci)and((poziom_znakowy_rozdzialu>0)or(poziom_znakowy_rozdzialu<0)))then local function Poziom_dodatni_lub_ujemny() return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(poziom_artykulu>poziom_naglowka)then return true; elseif(czy_sredniki)then return true; end; return false; end); end; local function czy_inaczej_numeruj_rozdzial_dodatni() return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],false,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(not w_rozdziale)then if(poziom_artykulu>poziom_naglowka)then return true; end; return false; end; end); end; local function czy_inaczej_numeruj_rozdzial_ujemny() return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],nil,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(poziom_artykulu>poziom_naglowka)then return true; end; end); end; if((poziom_znakowy_rozdzialu>0)and((czy_inaczej_numeruj_rozdzial_dodatni())or(Poziom_dodatni_lub_ujemny())))then glowny_spis_tresci_lub_rozdzial_ksiazki=true; if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; ---- if(not tab_poziomowo_1)then tab_poziomowo_1={};end; table.insert(tab_poziomowo_1,{tab_poziomowo,poziom_naglowka_bez_poprawki,}); ---- tab_poziomowo={}; tab_numer_zapasowe=tab_numer; ------ if(not tab_numer_baza_spis_tresci)then tab_numer_baza_spis_tresci={};end; table.insert(tab_numer_baza_spis_tresci,{tab_numer,HNumerPoziomow,HNumerPoziomowNaglowkow,poziom_naglowka_bez_poprawki,1,}); ----- HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); spis_tresci=false; ----- tab_numer={}; elseif((poziom_znakowy_rozdzialu<0)and((czy_inaczej_numeruj_rozdzial_ujemny())or(Poziom_dodatni_lub_ujemny())))then glowny_spis_tresci_lub_rozdzial_ksiazki=true; if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; ---- if(not tab_poziomowo_1)then tab_poziomowo_2={};end; table.insert(tab_poziomowo_2,{tab_poziomowo,poziom_naglowka_bez_poprawki,}); ---- tab_poziomowo={}; tab_numer_zapasowe=tab_numer; ----- if(not tab_numer_baza_spis_tresci)then tab_numer_baza_spis_tresci={};end; table.insert(tab_numer_baza_spis_tresci,{tab_numer,HNumerPoziomow,nil,poziom_naglowka_bez_poprawki,-1,}); spis_tresci=false; ----- HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); ----- tab_numer={}; end; local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek(); if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; elseif(((not czy_jest_teraz_spis_tresci)and(not czy_rozdzial_spisu)and(((not pierwszy_dodatni_naglowek)and(poziom_znakowy_rozdzialu>0)) or(((not pierwszy_ujemny_naglowek)or((prawdziwy_poziom_rozdzialu_poprz)and(prawdziwy_poziom_rozdzialu_poprz>0)))and(poziom_znakowy_rozdzialu<0)))) and(not CzyJestONumerzeMniejszymLubRownymPoziomieNizAktualnyRozdzial()))and((not czy_pierwszy_nilowy_rozdzial)or((#tab_numer~=1)or(tab_numer[1]==1)))then glowny_spis_tresci_lub_rozdzial_ksiazki=true; if(poziom_rozdzialu>0)then if(poziom_znakowy_rozdzialu>0)then if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; ---- HNumerPoziomowNaglowkow_2=HNumerPoziomowNaglowkow; HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); tab_numer_zapasowe=tab_numer; tab_numer_3=tab_numer; tab_numer={}; HNumerPoziomow_3=HNumerPoziomow; HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); pierwszy_dodatni_naglowek=true; poziom_pierwszego_dodatniego_naglowka=poziom_rozdzialu; glowny_dodatni_rozdzial=true; else if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; ---- tab_numer_zapasowe=tab_numer; tab_numer_4=tab_numer; tab_numer=parametry_modul["KopiujTabelęElementów"](tab_numer); tab_numer[#tab_numer]=nil; HNumerPoziomow_4=HNumerPoziomow; HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); if(poprz_poziom_rozdzialu_lub_artykulu)then numer_rozdzialu=HNumerPoziomow(poprz_poziom_rozdzialu_lub_artykulu,#tab_numer); end; pierwszy_ujemny_naglowek=true; poprz_ujemnego_rozdzialu_dodatniego_rozdzialu=(m>1) and prawdziwy_poziom_rozdzialu_poprz or false; poziom_pierwszego_ujemnego_naglowka=poziom_rozdzialu; glowny_ujemny_rozdzial=true; end; else if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; end; local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek(); if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; else local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek(); if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; ---- if(wartosc)then else if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; end; end; -- end; zbieraj_dane=true; poprz_numeracji_rozdzialu_lub_artykulu=poziom_numeracji_rozdzialu; poprz_poziom_rozdzialu_lub_artykulu=poziom_naglowka; poprz_numer_rozdzialu_lub_artykulu=numer_rozdzialu; poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_naglowka_bez_poprawki; prawdziwy_poziom_rozdzialu_poprz=prawdziwy_poziom_rozdzialu; ----- if(((not czy_rozdzial_spisu))and((m>1)or((m==1)and(not czy_pierwszy_nilowy_rozdzial))))then if(prawdziwy_poziom_rozdzialu>0)then pierwszy_dodatni_naglowek=true; pierwszy_ujemny_naglowek=nil; else pierwszy_ujemny_naglowek=true; pierwszy_dodatni_naglowek=true; end; end; ---- czy_ostatni_rozdzial_jest_centrowany=((poziom_znakowy_rozdzialu>0)and(czy_rozdzial_centrowany and true or nil) or ((poziom_znakowy_rozdzialu<=0)and czy_ostatni_rozdzial_jest_centrowany or nil)); else local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; if((tab_lista[2])and(parametry_modul["CzySąElementyNumerowaneTablicy"](tab_lista[2])))then local HNumerArtykulu=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local HNumerPoziomu=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local czy_dwukropek_artykulu=nil; local stare_HNumerArtykulu=nil; local stare_HNumerPoziomu=nil; local czy_tytul_rozdzial=nil; local czy_ma_elementy=nil; ostatni_poczatek_artykulu=nil; local czy_zera=nil; local ile_w_rozdziale=nil; local poprz_poziom_artykulu_bez_b=nil; local k=1; ----- local czy_w_rozdziale_rejestrowane_osobno_artykuly=nil; local artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=nil; local czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=nil; ----- local numer_poprz_w_rozdziale=nil; local poczatek_poprz=nil; local id_poprz=nil; local tab_poprzedni_artykul_w_bazie=nil; local odejmnij_od_dwukropka_w_rozdziale=0; ----- local czy_w_trakcie_dwukropkowania_w_rozdziale=nil; ----- local poziom_zerowego_artykulu=0; local staly_poziom_rozdzialu_z_artykulami=0; local nilowanie_poprzedniego_rejestru_tab_poziomowo=nil; local czy_w_podreczniku_poprz=nil; ----- local stare_HNumerPoziomu_poza_rozdzialem=nil; local ile_w_rozdziale_licznik=1; local staly_dodatek_rozdzialu_temp=0; local staly_dodatek_rozdzialu_roz=staly_dodatek_rozdzialu; local staly_dodatek_artykulu=0; local ostatni_artykul_w_rozdziale=nil; local tab_numer_w_rozdziale=nil; local podrozdzial_spisu=nil; local dodatek_poprz=nil; ----- for p,artykul_w_bazie in ipairs(tab_lista[2])do local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]); local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1]; local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil; local Przekierowanie=function(przekierowanie) return (((parametry_modul.TypeString(przekierowanie))and(przekierowanie))or(parametry_modul.TypeTable(przekierowanie)and(((przekierowanie[1])and((przekierowanie[2])or(przekierowanie[3])))or(przekierowanie[1]))and(przekierowanie[1]..(przekierowanie[2] and ("?"..(przekierowanie[2] or "")) or "")..(przekierowanie[3] and ("#"..(przekierowanie[3] or "")) or "")))); end; local czy_w_podreczniku=artykul_w_bazie[5]; local czy_inna_ksiazka; if(czy_table_baza_artykulu)then local czy_table_dane=parametry_modul.TypeTable(artykul_w_bazie[1][4]); if(czy_table_dane)then czy_inna_ksiazka=artykul_w_bazie[1][4][5]; end; end; local czy_url=czy_table_baza_artykulu and artykul_w_bazie[1][9] or nil; local przekierowanie=(czy_w_podreczniku) and (czy_table_baza_artykulu and ((not artykul_w_bazie[1][4])and(not artykul_w_bazie[1][7]) and Przekierowanie(artykul_w_bazie[1][3]) or {Przekierowanie(artykul_w_bazie[1][3]),artykul_w_bazie[1][4],nil,nil,artykul_w_bazie[1][7],}) or nil) or (((not czy_w_podreczniku)and(czy_table_baza_artykulu)and(artykul_w_bazie[1][5])or(artykul_w_bazie[1][6])or(artykul_w_bazie[1][7])) and {nil,nil,artykul_w_bazie[1][5],artykul_w_bazie[1][6],artykul_w_bazie[1][7],} or nil); --- local czy_dodane_lub_kolega=czy_table_baza_artykulu and artykul_w_bazie[1][8] or nil; local czy_dodane=parametry_modul.TypeBoolean(czy_dodane_lub_kolega) and czy_dodane_lub_kolega or nil; local ile_dodano=parametry_modul.TypeNumber(czy_dodane_lub_kolega) and czy_dodane_lub_kolega or nil; ---- artykul=UzyskajArtykul(artykul); ---- if(naglowek or not tab_artykul[artykul])then pierwszy_rowny_rozdzial=nil; czy_ma_elementy=true; if(not naglowek)then tab_artykul[artykul]=true; end; local tab_artykul_w_bazie; local w_rozdziale; if(poziomowo)then local poziom_artykulu=artykul_w_bazie[2][1]+(ile_dodano or 0); local poziom_poczatku_artykulu=artykul_w_bazie[2][2]; ---- local czy_poczatek_rozdzialu=(IleNajblizejDalejBezPoziomowo(p-1)>IleNajblizejDalejBezPoziomowo(0)); w_rozdziale=artykul_w_bazie[2][4]; poziom_artykulu=poziom_artykulu+(w_rozdziale and 1 or 0)+((((ile_dodano)and(ile_dodano>0))and(w_rozdziale))and 1 or 0); if(w_rozdziale)then poziom_artykulu,odejmnij_od_dwukropka_w_rozdziale,czy_w_trakcie_dwukropkowania_w_rozdziale=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz_w_rozdziale or 0,czy_w_trakcie_dwukropkowania_w_rozdziale,odejmnij_od_dwukropka_w_rozdziale); numer_poprz_w_rozdziale=tonumber(tab_lista[2][p][2][1]); else poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka); end; ---- local numeracja_artykulu=artykul_w_bazie[2][3]; local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu); local czy_rozdzial_z_poczatkiem_jedynki=nil; if(w_rozdziale)then if(not stare_HNumerPoziomu_poza_rozdzialem)then stare_HNumerPoziomu_poza_rozdzialem=HNumerPoziomow; HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); ----- tab_numer_w_rozdziale=tab_numer; tab_numer=tab_numer_zapasowe or tab_numer; end; local function CzyRozdzialMaArtykulyNieWewnetrzNaglowka() local czy_artykuly=nil; return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],false,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(not w_rozdziale)then czy_artykuly=true; if(poziom_artykulu>poziom_naglowka)then return true; end; return false; end; end),czy_artykuly; end; local function CzyRozdzialMaRozdzialyNieWewnetrzNaglowka() return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu_artykulu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if((poziom_znakowy_rozdzialu<0)and(poziom_znakowy_rozdzialu_artykulu>0))then return false; else if(poziom_artykulu>poziom_naglowka)then return true; end; return false; end; end); end; if(not ile_w_rozdziale)then ile_w_rozdziale=IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista,false); end; if(ile_w_rozdziale_licznik==ile_w_rozdziale)then czy_w_trakcie_dwukropkowania_w_rozdziale=nil; odejmnij_od_dwukropka_w_rozdziale=0; numer_poprz_w_rozdziale=nil; ostatni_artykul_w_rozdziale=true; end; ile_w_rozdziale_licznik=ile_w_rozdziale_licznik+1; if((poziom_znakowy_rozdzialu>0)and(ile_w_rozdziale==1))then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,{},nil,tab_lista[2][p][5],przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; czy_w_rozdziale_rejestrowane_osobno_artykuly=true; elseif(not artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka)then artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=true; if(parametry_modul.TypeNil(czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka))then local czy_ma_artykuly; czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka,czy_ma_artykuly=CzyRozdzialMaArtykulyNieWewnetrzNaglowka(); if((not czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka)and(not czy_ma_artykuly))then czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=CzyRozdzialMaRozdzialyNieWewnetrzNaglowka(); end; end; if((czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka)and(not glowny_ujemny_rozdzial))then tab_numer[#tab_numer+1]=0; end; end; else if((artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka)or(czy_w_rozdziale_rejestrowane_osobno_artykuly))then ----- tab_poziomowo={}; HNumerPoziomu=stronicowyparser_potrzebne_modul.LiczonyHNumer(); HNumerArtykulu=stronicowyparser_potrzebne_modul.LiczonyHNumer(); ----- artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=nil; czy_w_rozdziale_rejestrowane_osobno_artykuly=nil; ---- k=1; tab_poprzedni_artykul_w_bazie=nil; end; --- if(not czy_zera)then if((((not czy_nienilowy_rozdzial)and(m==1))or((czy_nienilowy_rozdzial)and(m>=1)))and(k==1))then local numer=tab_lista[2][p][2][1]; local poczatek=tab_lista[2][p][2][2]; if(((not czy_nienilowy_rozdzial)and(mw.ustring.match(poczatek,"^:")))or(numer+poziom_numeracji_artykulu==0))then for s=p+1,#tab_lista[2],1 do if(CzyWliczacBezPoziomowo(p,s))then local numer=tab_lista[2][s][2][1]; local poczatek=tab_lista[2][s][2][2]; local numeracja_artykulu=tab_lista[2][s][2][3]; local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu); if((mw.ustring.match(poczatek,"^#"))or(numer+poziom_numeracji_artykulu>0))then if(((#tab_numer>0)and(tab_numer[#tab_numer]~=0))or(#tab_numer==0))then table.insert(tab_numer,0); end; tab_poziomowo={}; czy_zera=true; break; elseif((not mw.ustring.match(poczatek,"^:"))and(not(#poczatek==0)))then break; end; end; end; end; end; else local numer=tonumber(tab_lista[2][p][2][1]); local poczatek=tab_lista[2][p][2][2]; local id=tab_lista[2][p][4]; local function DodajUsunNumerek(jedno,drugie,trzecie) if((not jedno)and(not drugie)and(not trzecie))then return;end; if((#tab_numer>(HNumerPoziomowNaglowkow(0) or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka))then czy_zera=false; tab_poziomowo={}; table.remove(tab_numer,#tab_numer); if(#tab_numer>0)then tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0)+1; end; czy_rozdzial_z_poczatkiem_jedynki=true; end; end; DodajUsunNumerek(((mw.ustring.match(poczatek_poprz,"^:"))and(mw.ustring.match(poczatek,"^#"))),((#poczatek_poprz==0)and(not id_poprz)and(#poczatek>0)and(not id)),((#poczatek_poprz+poprz_numeracji_rozdzialu_lub_artykulu==0)and(numer+poziom_numeracji_artykulu>0))); end; if((not czy_zera) and((k==1)and(not w_rozdziale)and(tab_lista_artykulow_w_ksiazce[m+1]) and(((m==1)and(not czy_nienilowy_rozdzial)and(((artykul_w_bazie[2][1]+poziom_numeracji_artykulu)==0)or(tab_lista_artykulow_w_ksiazce[m+1][1][2][1]>0))) or((m>1)and(czy_nienilowy_rozdzial)and((artykul_w_bazie[2][1]+poziom_numeracji_artykulu)==0))) ))then local czy_sa_jakies_artykuly_niezerowe=false;local ile=0; local poziom_zerowy=artykul_w_bazie[2][1]+poziom_numeracji_artykulu; if(poziom_zerowy)then for h,artykul_w_bazie in ipairs(tab_lista[2])do if(h>p)then local poziom_artykulu=artykul_w_bazie[2][1]; local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu); if(poziom_artykulu+poziom_numeracji_artykulu>0)then czy_sa_jakies_artykuly_niezerowe=true; break; end; end; end; for h,artykul_w_bazie in ipairs(tab_lista[2])do if(h>=p)then ile=ile+1; end; end; end; if(((poziom_zerowy==0)and(czy_sa_jakies_artykuly_niezerowe)or(not czy_nienilowy_rozdzial))or(poziom_zerowy>0))then if(ile<=5)then table.insert(tab_numer,0); else nilowanie_poprzedniego_rejestru_tab_poziomowo=true; end end; end; end; ostatni_poczatek_artykulu=poziom_poczatku_artykulu; ----- local poziom_zerowego_artykulu_poprz=poziom_zerowego_artykulu; poziom_artykulu,poziom_zerowego_artykulu=ToNumberPoziomArtykulu(poziom_artykulu); local poziom_zerowego_artykulu_aktualny=poziom_artykulu; poziom_zerowego_artykulu=ZerowyArtykul(tab_lista[2],p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka,poziom_zerowego_artykulu_poprz); ---- local czy_sredniki=mw.ustring.match(poziom_poczatku_artykulu,"^(;+)"); if(czy_sredniki)then poziom_zerowego_naglowka=0; if(glowny_ujemny_rozdzial)then HNumerPoziomow=HNumerPoziomow_4; HNumerPoziomow_4=nil; tab_numer=tab_numer_4; poziom_pierwszego_ujemnego_naglowka=nil; glowny_ujemny_rozdzial=nil; ---- end; KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1,true); end; ---- local poziom_czysty_artykulu=poziom_artykulu; ---- local __poziom_poczatku_rozdzialu= (not czy_poczatek_rozdzialu) and poziom_poczatku_rozdzialu or poczatek_poprz; local __poziom_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_rozdzialu or poziom_artykulu; poziom_artykulu,staly_poziom_rozdzialu_z_artykulami=PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,__poziom_rozdzialu,__poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami); ---- poziom_zerowego_naglowka=czy_sredniki and 0 or poziom_zerowego_naglowka; poziom_zerowego_artykulu=czy_sredniki and 0 or poziom_zerowego_artykulu; ---- poziom_srednikowego_naglowka=czy_sredniki and 0 or poziom_srednikowego_naglowka; ---- poziom_zerowego_naglowka=((ostatni_artykul_w_rozdziale)and(not w_rozdziale)and(poziom_zerowego_naglowka>0)and(poziom_zerowego_artykulu_aktualny==0)) and (poziom_zerowego_naglowka-1) or poziom_zerowego_naglowka; if((ostatni_artykul_w_rozdziale)and(not w_rozdziale))then ostatni_artykul_w_rozdziale=nil; end; ---- if((poziom_znakowy_rozdzialu<0)and(rozdzial==""))then poziom_artykulu=poziom_naglowka+poziom_artykulu+poziom_zerowego_artykulu+(poziom_spisu_tresci_dodatek or 0); else poziom_artykulu=poziom_artykulu+poziom_zerowego_artykulu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+((not czy_sredniki)and poziom_srednikowego_naglowka or 0)+(poziom_spisu_tresci_dodatek or 0); end; ---- local poziom_podany_artykulu_bez_numeracji=poziom_artykulu; poziom_artykulu=poziom_artykulu+(poziom_numeracji_artykulu or 0); ---- local __poprz_poziom_rozdzialu_lub_artykulu=((poziom_znakowy_rozdzialu>0) and poprz_poziom_rozdzialu_lub_artykulu or poziom_naglowka); local __poprz_czysty_poziom_rozdzialu_lub_artykulu=(poziom_znakowy_rozdzialu>0) and poprz_czysty_poziom_rozdzialu_lub_artykulu or poziom_numeracji_rozdzialu; if(not w_rozdziale)then if(k==1)then staly_dodatek_rozdzialu_temp=staly_dodatek_rozdzialu_roz; end; end; poziom_artykulu,staly_dodatek_rozdzialu_temp--[[staly_dodatek]]=PoziomNumerNaglowka(poziom_podany_artykulu_bez_numeracji,poziom_numeracji_artykulu,__poprz_poziom_rozdzialu_lub_artykulu,__poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu_temp--[[staly_dodatek]]); if(not w_rozdziale)then staly_dodatek_rozdzialu=staly_dodatek_rozdzialu_temp;end; ---- local prefix_poziom_artykulu=poziom_artykulu; local function WielopoziomowyAdres(poziom_artykulu,poprz_poziom_artykulu_bez_b,tab_poprzedni_artykul_w_bazie,staly_dodatek_artykulu) local b=0; local tab_artykul_w_bazie=mw.text.split(artykul,"/"); if((tab_poprzedni_artykul_w_bazie)and((czy_w_podreczniku_poprz)and(czy_w_podreczniku)))then if((#tab_artykul_w_bazie>1)or(#tab_poprzedni_artykul_w_bazie>1))then for c=1,#tab_artykul_w_bazie,1 do local podstrona_artykul=tab_artykul_w_bazie[c]; local podstrona_poprzedni_artykul=tab_poprzedni_artykul_w_bazie[c]; if(podstrona_artykul==podstrona_poprzedni_artykul)then b=b+1; else break; end; end; end; else if(k==1)then if(#tab_artykul_w_bazie>1)then local podrozdzial_artykulu=tab_artykul_w_bazie[1]; podrozdzial_artykulu=parametry_modul["Odstępy"]{[1]=podrozdzial_artykulu,[2]="tak",}; podrozdzial_artykulu=mw.getContentLanguage():ucfirst(podrozdzial_artykulu); if(not podrozdzial_spisu)then podrozdzial_spisu=parametry_modul["Odstępy"]{[1]=rozdzial,[2]="tak",}; podrozdzial_spisu=mw.getContentLanguage():ucfirst(podrozdzial_spisu); end; local czy_z_rozdzialem=(podrozdzial_artykulu==podrozdzial_spisu); if(czy_z_rozdzialem)then b=1;end; end; end end; if((#tab_artykul_w_bazie==b)and(#tab_poprzedni_artykul_w_bazie==b))then b=b-1;end; if(not poprz_poziom_artykulu_bez_b)then staly_dodatek_artykulu={b,true}; return 0,staly_dodatek_artykulu,tab_artykul_w_bazie; end; if(poziom_artykulu==poprz_poziom_artykulu_bez_b)then if((k>=2)and(czy_w_podreczniku)and(staly_dodatek_artykulu[2])and(staly_dodatek_artykulu[1]==0)and(#tab_poprzedni_artykul_w_bazie>1)and(b>0)and(#tab_poprzedni_artykul_w_bazie>=b+1))then staly_dodatek_artykulu[1]=b; staly_dodatek_artykulu[2]=false; end; if(((k==2)or(staly_dodatek_artykulu[3]))and(not czy_w_podreczniku))then staly_dodatek_artykulu[3]=k; elseif((k>2)and(czy_w_podreczniku)and((staly_dodatek_artykulu[3] or 0)+2==k)and(b>0))then staly_dodatek_artykulu[3]=nil; staly_dodatek_artykulu[1]=b; end; local poziom_numeracji=b-(staly_dodatek_artykulu[1] or 0); return ((czy_w_podreczniku)and ((poziom_numeracji>=0)and poziom_numeracji or 0)or(dodatek_poprz)),staly_dodatek_artykulu,tab_artykul_w_bazie; elseif(poziom_artykulu~=poprz_poziom_artykulu_bez_b)then staly_dodatek_artykulu={b,true}; if((k==2)and(not czy_w_podreczniku))then staly_dodatek_artykulu[3]=k; end; return 0,staly_dodatek_artykulu,tab_artykul_w_bazie; end; return 0,staly_dodatek_artykulu,tab_artykul_w_bazie; end; ----- local dodatek; dodatek,staly_dodatek_artykulu,tab_artykul_w_bazie=WielopoziomowyAdres(poziom_artykulu,poprz_poziom_artykulu_bez_b,tab_poprzedni_artykul_w_bazie,staly_dodatek_artykulu); poprz_poziom_artykulu_bez_b=poziom_artykulu; local numer_poziomu=HNumerPoziomow(poziom_artykulu); ----- if(not w_rozdziale)then if(poziom_znakowy_rozdzialu<0)then if(poziom_artykulu<=(poziom_pierwszego_ujemnego_naglowka or 0))then tab_poziomowo=tab_numer_4; tab_numer={}; HNumerPoziomu=HNumerPoziomow_4; HNumerArtykulu(poziom_artykulu,HNumerPoziomu(0)); else local numer=numer_rozdzialu-numer_poziomu; if(numer>=0)then local tab_numer_s=tab_numer; local tab_poziomowo_s=tab_poziomowo; tab_numer={};tab_poziomowo={}; if(#tab_numer_s>=numer_poziomu-1)then for i=1,numer_poziomu-1,1 do tab_numer[i]=tab_numer_s[i]; end; for i=numer_poziomu,#tab_numer_s,1 do tab_poziomowo[i-numer_poziomu+1]=tab_numer_s[i]; end; for i=1,#tab_poziomowo_s,1 do tab_poziomowo[i+#tab_numer_s-numer_poziomu+1]=tab_poziomowo_s[i]; end; else for i=1,#tab_numer_s,1 do tab_numer[i]=tab_numer_s[i]; end; for i=1,numer_poziomu-1,1 do tab_numer[i+#tab_numer_s]=tab_poziomowo_s[i]; end; for i=numer_poziomu,#tab_poziomowo_s,1 do tab_poziomowo[i-numer_poziomu+1]=tab_poziomowo_s[i]; end; end; end; end; end; end; if(not czy_w_rozdziale_rejestrowane_osobno_artykuly)then if((not w_rozdziale)and(poziomowo)and(poziom_znakowy_rozdzialu<0))then if((numer_rozdzialu>=numer_poziomu)and(numer_poziomu>=1))then HNumerPoziomu(poziom_artykulu,1); HNumerArtykulu(poziom_artykulu,1); end; end; local stala=poziom_artykulu; if(czy_rozdzial_z_poczatkiem_jedynki)then HNumerPoziomu(stala,1); HNumerArtykulu(stala,1); end; local numer_poziomu=HNumerPoziomu(stala); poziom_artykulu=stala+dodatek; local numer=HNumerArtykulu(poziom_artykulu); local roznica=numer_poziomu-numer; if(roznica>0)then numer=HNumerArtykulu(poziom_artykulu,numer_poziomu); end; if(#tab_poziomowo<numer)then for i=#tab_poziomowo+1,numer,1 do table.insert(tab_poziomowo,1); end; else if(#tab_poziomowo>numer)then for i=#tab_poziomowo,numer+1,-1 do table.remove(tab_poziomowo,i); end; end; tab_poziomowo[#tab_poziomowo]=(tab_poziomowo[#tab_poziomowo] or 0)+1; end; end; ---- tab_poprzedni_artykul_w_bazie=tab_artykul_w_bazie; poprz_numeracji_rozdzialu_lub_artykulu=poziom_numeracji_artykulu; poprz_poziom_rozdzialu_lub_artykulu=poziom_artykulu; poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_podany_artykulu_bez_numeracji; poziom_srednikowego_naglowka=czy_sredniki and poziom_czysty_artykulu or poziom_srednikowego_naglowka; numer_poprz=(not w_rozdziale)and tonumber(tab_lista[2][p][2][1]) or ((w_rozdziale)and numer_poprz or nil); poprz_numer_rozdzialu_lub_artykulu=numer_poziomu; poczatek_poprz=tab_lista[2][p][2][2]; id_poprz=tab_lista[2][p][4]; czy_w_podreczniku_poprz=czy_w_podreczniku; dodatek_poprz=dodatek; end; local wartosc; if(not czy_w_rozdziale_rejestrowane_osobno_artykuly)then wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,nil,tab_lista[2][p][5],przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; if(not poziomowo)then i=i+1; else if((ostatni_artykul_w_rozdziale)and(w_rozdziale))then HNumerPoziomow=stare_HNumerPoziomu_poza_rozdzialem; stare_HNumerPoziomu_poza_rozdzialem=nil; tab_numer=tab_numer_w_rozdziale; poprzedni_tab_poziomowo=nil; ----- poziom_zerowego_artykulu=0; ----- czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=nil; if((#tab_numer>0)and(tab_numer[#tab_numer]==0))then tab_numer[#tab_numer]=nil; end; else if(not nilowanie_poprzedniego_rejestru_tab_poziomowo)then poprzedni_tab_poziomowo=tab_poziomowo; else poprzedni_tab_poziomowo={1,}; end; end; end; k=k+1; end; end; if(not czy_ma_elementy)then poprzedni_tab_poziomowo=nil; end; else poprzedni_tab_poziomowo=nil; end; end; end; return; end; local function ZamienNumerArtykuluNaTabele(numer_artykulu) local tab_numer_artykulu=mw.text.split(numer_artykulu,".",true); return tab_numer_artykulu; end; local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) if(#tab_numer_artykulu<=1)then return tab_numer_artykulu;end; local stronicowyparser_modul=require("Module:StronicowyParser"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local parametry_modul=require("Module:Parametry"); local nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly=stronicowyparser_modul["DaneUkładuAutonawigacji"](frame,tabela_listy_danych_analizy_ksiazki); if((not tab_inne_spisy)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tab_inne_spisy)))then return tab_numer_artykulu;end; local tab_w_spis={}; for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do local poziom_rozdzialu=tab_lista[1][2][1]; if(tab_lista[2])then for p,artykul_w_bazie in ipairs(tab_lista[2])do if((m>1)and(poziom_rozdzialu==1))then break;end; local czy_table_baza_artykulu=parametry_modul.TypeTable(artykul_w_bazie[1]); local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1]; local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil; local czy_artykul=nil; for _,tab_lub_str in ipairs(tab_inne_spisy)do local czy_tab_lub_str=parametry_modul.TypeTable(tab_lub_str); if(czy_tab_lub_str)then if(tab_lub_str[1]==artykul)then czy_artykul=true; end; else if(tab_lub_str==artykul)then czy_artykul=true; end; end; end; if(czy_artykul)then tab_w_spis[artykul]=true; end; end; end; end; local czy_w_spis=true; for _,name in ipairs(tab_inne_spisy)do local czy_table_name=parametry_modul.TypeTable(name); czy_w_spis=czy_w_spis and tab_w_spis[czy_table_name and name[1] or name]; if(not czy_w_spis)then break;end; end; if(not czy_w_spis)then return tab_numer_artykulu; end; if((tab_numer_artykulu)and(#tab_numer_artykulu>1)and(tab_numer_artykulu[1])and(tab_numer_artykulu[1]=='1'))then table.remove(tab_numer_artykulu,1); end; if((tab_numer_artykulu)and(#tab_numer_artykulu>1)and(tab_numer_artykulu[1])and(tab_numer_artykulu[1]=='1'))then local nazwa_spisu,numer_spisu; local czy_jedno=true;local pierwszy_rozdzial; for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do local poziom_rozdzialu=tab_lista[1][2][1]; if(m>1)then if(poziom_rozdzialu==1)then break; elseif(m==2)then pierwszy_rozdzial=poziom_rozdzialu; elseif(m>2)then czy_jedno=czy_jedno and pierwszy_rozdzial and (pierwszy_rozdzial<poziom_rozdzialu); end; end; end; if(czy_jedno)then table.remove(tab_numer_artykulu,1); end; end; return tab_numer_artykulu; end; local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu) local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu); if(#tab_numer_artykulu<1)then return tab_numer_artykulu;end; local tab_numer_spisu=ZamienNumerArtykuluNaTabele(numer_spisu); local lens=#tab_numer_spisu; for i=lens,1,-1 do if(i==lens)then tab_numer_artykulu[1]=tab_numer_spisu[i]; else table.insert(tab_numer_artykulu,1,tab_numer_spisu[i]); end; end; return tab_numer_artykulu; end; p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki) local s=1; local parametry_modul=require("Module:Parametry"); local args_kopia; local tab_spis; local dane_szablonu; local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki) ---- dane_szablonu=dane_szablonu or pierwszy_parametr_szablonu(); local nazwa_artykulu,czy_nazwa,dane=dane_szablonu[1],dane_szablonu[2],dane_szablonu[3]; ---- if((((dane==2)or(dane==3))and(artykul=="")and(rozdzial==nazwa_artykulu))or(((dane==1)or(dane==3))and(artykul~="")and((nazwa_artykulu==artykul)or(((przekierowanie)and(parametry_modul.TypeString(przekierowanie))and(przekierowanie==nazwa_artykulu))or(parametry_modul.TypeTable(przekierowanie)and(przekierowanie[1]==nazwa_artykulu))))))then if(s==ktory)then if(poziomowo)then local numer_artykulu=(table.concat(tab_numer,".")..((#tab_numer>0) and ((#tab_poziomowo>0) and "." or "") or "")..table.concat(tab_poziomowo,".")); if((not nazwa_spisu)or(not numer_spisu) or ((not glowny_spis_tresci_lub_rozdzial_ksiazki)and((tonumber(numer_artykulu) or 1)>1)) or((glowny_spis_tresci_lub_rozdzial_ksiazki)and((numer_spisu or 1)>1)) )then return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki; elseif((numer_spisu)and(numer_spisu==1))then if(glowny_spis_tresci_lub_rozdzial_ksiazki)then return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki; else local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu); tab_numer_artykulu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu); return table.concat(tab_numer_artykulu,"."),glowny_spis_tresci_lub_rozdzial_ksiazki; end; end; local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci; if((not tab_spis)or(not tab_spis[nazwa_spisu]))then if(not args_kopia)then local args=parametry_modul.PobierzArgsParametry(frame,true); args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args); end; args_kopia[1]=nazwa_spisu; if(not tab_spis)then tab_spis={};end; tab_spis[nazwa_spisu]={}; numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=PobierzNumerLubNazweArtykulu({args=args_kopia,},tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,}; else local tab_element=tab_spis[nazwa_spisu]; numer_spisu_tresci=tab_element[1]; glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2]; end; if(not numer_spisu_tresci)then return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki;end; local tab_numer_artykulu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu_tresci); tab_numer_artykulu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) or tab_numer_artykulu; return table.concat(tab_numer_artykulu,"."),glowny_spis_tresci_lub_rozdzial_ksiazki; else return i,glowny_spis_tresci_lub_rozdzial_ksiazki; end; end; s=s+1; end; end; local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; end; p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki) local s=1; local parametry_modul=require("Module:Parametry"); local args_kopia; local tab_spis; local dane_szablonu; local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki) ---- dane_szablonu=dane_szablonu or pierwszy_parametr_szablonu(); local numer,czy_nazwa,dane=dane_szablonu[1],dane_szablonu[2],dane_szablonu[3]; ---- if((not poziomowo)and(i==numer))then if(s==ktory)then if(artykul~="")then local wartosc=(not czy_nazwa) and artykul or (nazwa or artykul); return wartosc; else return rozdzial; end; else s=s+1; end; elseif(poziomowo)then local function NumerArtykulu(tab_numer,tab_poziomowo) return (table.concat(tab_numer,".")..((#tab_numer>0) and ((#tab_poziomowo>0) and "." or "") or "")..table.concat(tab_poziomowo,".")); end; local function WynikArtykulowyZNumeru(numer_artykulu) if((((dane==2)or(dane==3))and(artykul=="")and(numer_artykulu==numer))or(((dane==1)or(dane==3))and(artykul~="")and(numer_artykulu==numer)))then if(s==ktory)then if(artykul~="")then local wartosc=(not czy_nazwa) and artykul or (nazwa or artykul); return wartosc; else return rozdzial; end; else s=s+1; end; end; end; local numer_artykulu=NumerArtykulu(tab_numer,tab_poziomowo); if((not nazwa_spisu)or(not numer_spisu) or ((not glowny_spis_tresci_lub_rozdzial_ksiazki)and((tonumber(numer_artykulu) or 1)>1)) or((glowny_spis_tresci_lub_rozdzial_ksiazki)and((numer_spisu or 1)>1)) )then local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; elseif((numer_spisu)and(numer_spisu==1))then if(glowny_spis_tresci_lub_rozdzial_ksiazki)then local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; else local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu); tab_numer_artykulu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu); local numer_artykulu=table.concat(tab_numer_artykulu,"."); local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; else local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci; if((not tab_spis)or(not tab_spis[nazwa_spisu]))then if(not args_kopia)then local args=parametry_modul.PobierzArgsParametry(frame,true); args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args); end; args_kopia[1]=nazwa_spisu; numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki); if(not tab_spis)then tab_spis={};end; tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,}; else local tab_element=tab_spis[nazwa_spisu]; numer_spisu_tresci=tab_element[1]; glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2]; end; if(not numer_spisu_tresci)then local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; local tab_numer_artykulu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu_tresci); tab_numer_artykulu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) or tab_numer_artykulu; local numer_artykulu=table.concat(tab_numer_artykulu,"."); local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; end; end; local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; end; p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki,kodowanie_nie_json) local tab_dane_ksiazki=nil; local s=1; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local args_kopia; local tab_spis; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local pierwszy_spis_tresci=nil; local artykul_spisowy=nil; local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url) if((artykul_spisu)and(nazwa_spisu))then if((artykul_spisu~=nazwa_spisu))then if(not artykul_spisowy)then return false;else return true;end; elseif((not artykul_spisowy)and(artykul_spisu==nazwa_spisu))then artykul_spisowy=true; end; end; if(not tab_dane_ksiazki)then tab_dane_ksiazki={};end; if(not tab_dane_ksiazki[rozdzial])then tab_dane_ksiazki[rozdzial]={};end; local tab_rozdzial=tab_dane_ksiazki[rozdzial]; local numer_rozdzialu=tab_numer and table.concat(tab_numer,".") or ""; if((nazwa_spisu)and(numer_spisu)and(not glowny_spis_tresci_lub_rozdzial_ksiazki)and(numer_rozdzialu~=""))then local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci; if((numer_spisu)and(numer_spisu==1))then if(not glowny_spis_tresci_lub_rozdzial_ksiazki)then local tab_numer_rozdzialu=ZamienNumerArtykuluNaTabele(numer_rozdzialu); tab_numer_rozdzialu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu); numer_rozdzialu=table.concat(tab_numer_rozdzialu,"."); end; else if((not tab_spis)or(not tab_spis[nazwa_spisu]))then if(not args_kopia)then local args=parametry_modul.PobierzArgsParametry(frame,true); args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args); end; args_kopia[1]=nazwa_spisu; numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki); if(not tab_spis)then tab_spis={};end; tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,}; else local tab_element=tab_spis[nazwa_spisu]; numer_spisu_tresci=tab_element[1]; glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2]; end; if(numer_spisu_tresci)then local tab_numer_rozdzialu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_rozdzialu,numer_spisu_tresci); tab_numer_rozdzialu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu) or tab_numer_rozdzialu; numer_rozdzialu=table.concat(tab_numer_rozdzialu,"."); end; end; elseif((not pierwszy_spis_tresci)and(nazwa_spisu)and(numer_spisu)and(glowny_spis_tresci_lub_rozdzial_ksiazki)and(numer_rozdzialu~=""))then local czy_spis_tresci=tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial]; if(czy_spis_tresci)then pierwszy_spis_tresci=true; local tab_numer_rozdzialu=ZamienNumerArtykuluNaTabele(numer_rozdzialu); tab_numer_rozdzialu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu); numer_rozdzialu=table.concat(tab_numer_rozdzialu,"."); end; end; if(not tab_rozdzial[numer_rozdzialu])then tab_rozdzial[numer_rozdzialu]={}; end; local tab_numer_rozdzialu=tab_rozdzial[numer_rozdzialu]; if(not tab_numer_rozdzialu[artykul])then tab_numer_rozdzialu[artykul]={}; end; local tab_artykul=tab_numer_rozdzialu[artykul]; local numer_artykulu=tab_poziomowo and table.concat(tab_poziomowo,".") or ""; if(not tab_artykul[numer_artykulu])then tab_artykul[numer_artykulu]={}; end; local tab_numer_artykulu=tab_artykul[numer_artykulu]; local czy_tabelka=parametry_modul.TypeTable(przekierowanie); ---- table.insert(tab_numer_artykulu,{["przekierowanie"]=czy_tabelka and przekierowanie[1] or ((not czy_tabelka) and przekierowanie or nil),["kod języka"]=czy_tabelka and przekierowanie[3] or nil,["kod projektu"]=czy_tabelka and przekierowanie[4] or nil,["pełna nazwa książki"]=(czy_tabelka and przekierowanie[2]) and nazwy_modul["NazwaModułu"](przekierowanie[2][1],przekierowanie[2][2],przekierowanie[2][3],"") or nil,["link"]=czy_tabelka and przekierowanie[5] or nil,["nazwa"]=nazwa,["spis treści"]=czy_nienilowy_rozdzial,["czy w podręczniku"]=(((artykul~="")or(numer_artykulu~="")) and ((czy_artykuly_podrecznikowe) and true or nil) or nil),["dodane"]=czy_dodane,["numer"]=s,["inna książka"]=czy_inna_ksiazka,["url"]=czy_url,}); ---- s=s+1; return false; end; PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; end; return p; 8rzs0lz9s65jmpgmdhj6wi32ec534ux 547829 547827 2026-07-20T03:39:21Z Persino 2851 547829 Scribunto text/plain local p={}; local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame); stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki); local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki); if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end; local args=stronicowyparser_potrzebne_modul:Args(frame); local parametry_modul=require("Module:Parametry"); local szablonowe_modul=require("Module:Szablonowe"); local naglowek=parametry_modul.CzyTak(args["nagłówek"]); local nie_wszystkie=parametry_modul.CzyTak(args["nie wszystkie"]); ---- local dane=tonumber(args["dane"]); if((not dane)or((dane~=1)and(dane~=2)and(dane~=3)))then dane=1;end; ---- local artykul_spisu=args["spis"]; artykul_spisu=artykul_spisu and parametry_modul["Odstępy"]{[1]=artykul_spisu,[2]="tak",} or nil; local tab_artykul=(not naglowek)and {} or nil; local poziomowo=parametry_modul.CzyTak(args["poziomowo"]); local tab_poziomowo={}; local tab_poziomowo_1={}; local tab_poziomowo_2={}; local html_modul=require("Module:Html"); ---- local function ParametrySzablonuPobierania() if(not zbieraj_dane_wszystkie)then local pierwszy_parametr_szablonu=nil;local czy_nazwa=nil; if(not typ)then pierwszy_parametr_szablonu=args[1] and ((not naglowek) and mw.ustring.gsub(html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](args[1]),true),"^([^#]*)#(.*)$","%1") or html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](args[1]),true)) or "Przykładowy artykuł"; else pierwszy_parametr_szablonu=args[1] and ((not poziomowo) and (tonumber(args[1]) or 1) or args[1]) or ((not poziomowo) and 1 or "1"); czy_nazwa=parametry_modul.CzyTak(args["nazwa"]); end; return function() return {pierwszy_parametr_szablonu,czy_nazwa,dane,}; end; end; end; local pierwszy_parametr_szablonu=ParametrySzablonuPobierania(); ---- local ktory=(tonumber(args["który"]) or 1); local i=(not poziomowo) and 1 or nil; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu; local tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu); local odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu); setmetatable(tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); setmetatable(tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); local HNumerPoziomow_4=nil; local HNumerPoziomow_3=nil local HNumerPoziomow_2=nil; local HNumerPoziomow_1=nil; local HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local HNumerPoziomowNaglowkow_1=nil; local HNumerPoziomowNaglowkow_2=nil; local tab_numer=poziomowo and {} or nil; local tab_numer_baza_spis_tresci=nil; local tab_numer_3=nil local tab_numer_4=nil;--poziomowo and {} or nil; local spis=false; local pierwszy_dodatni_naglowek=nil; local pierwszy_ujemny_naglowek=nil; local poprzedni_poziom_znakowy_rozdzialu=nil; local poprzedni_tab_poziomowo=nil; local poziom_pierwszego_dodatniego_naglowka=0; local poziom_pierwszego_ujemnego_naglowka=0; local poziom_zerowego_naglowka=0; local poziom_srednikowego_naglowka=0; local ostatni_rozdzial_dodatni=nil; local ostatni_rozdzial_centrowany=nil; local pierwszy_rozdzial_dodatni=nil; local glowny_dodatni_rozdzial=nil; local glowny_ujemny_rozdzial=nil; local spis_tresci=nil; local poziom_pierwszego_ujemnego_spisu_tresci=nil; local ostatni_poczatek_artykulu=nil; local pierwszy_rowny_rozdzial=nil; local rozdzial; local czy_pierwszy_nilowy=nil; local czy_nienilowy_rozdzial=nil; local czy_pierwszy_nilowy_rozdzial=nil; local czy_ostatni_rozdzial_jest_centrowany=nil; local glowny_spis_tresci_lub_rozdzial_ksiazki=nil; local poprz_poziom_rozdzialu_lub_artykulu=nil; local poprz_numeracji_rozdzialu_lub_artykulu=nil; local poprz_numer_rozdzialu_lub_artykulu=nil; local poprz_czysty_poziom_rozdzialu_lub_artykulu=nil; local poprz_ujemnego_rozdzialu_dodatniego_rozdzialu=nil; local staly_dodatek_rozdzialu=0; ---- local poziom_spisu_tresci_dodatek=nil; ---- local odejmnij_od_dwukropka=0; ----- local czy_w_trakcie_dwukropkowania=nil; ----- local numer_poprz=nil; ---- local tab_lista_artykulow_w_ksiazce2=tab_lista_artykulow_w_ksiazce; tab_lista_artykulow_w_ksiazce={}; local function TabLista(tab_lista) local max_ile=0; for name,value in pairs(tab_lista)do max_ile=math.max(max_ile,name); end; local function Iterator(tab_lista) local p2=0; local s=0; local pp=0; local function InneTablica(numer) local p1=0; return function() if((tab_lista[numer])and(tab_lista[numer][p1+1])and(tab_lista[numer][p1+1][6]==pp))then p1=p1+1; pp=pp+1; return s,tab_lista[numer][p1]; end; end; end; local function WszystkieInneTablica() local tab={}; for i=1,max_ile-2,1 do tab[i]=InneTablica(i+2); end; return function() for i=1,max_ile-2,1 do local wartosc,tab_artykul=tab[i](); if((wartosc)and(tab_artykul))then return wartosc,tab_artykul; end; end; end; end; --local p1=0; --local p2=0; --local s=0; local iter_inne_tablice=WszystkieInneTablica(); return function() s=s+1; local wartosc,tab_artykul=iter_inne_tablice(); if((wartosc)and(tab_artykul))then return wartosc,tab_artykul; elseif((tab_lista[2])and(tab_lista[2][p2+1]))then p2=p2+1; pp=pp+1; return s,tab_lista[2][p2]; else return nil; end; end; end; local tab={}; local iter=Iterator(tab_lista); for s,artykul_w_bazie in iter do tab[s]=artykul_w_bazie; end; return tab; end; for s,tab_lista in ipairs( tab_lista_artykulow_w_ksiazce2)do if(not tab_lista_artykulow_w_ksiazce[s])then tab_lista_artykulow_w_ksiazce[s]={};end; tab_lista_artykulow_w_ksiazce[s][1]=tab_lista[1]; tab_lista_artykulow_w_ksiazce[s][2]=TabLista(tab_lista); end; ---- local function ToNumberPoziomArtykulu(poziom_artykulu) local numer_artykulu=tonumber(poziom_artykulu); local numer_dodatkowy=((numer_artykulu)and(numer_artykulu>0)) and 0 or 1; return (numer_artykulu or 0),numer_dodatkowy; end; local function ZerowyArtykul(tab_lista_2,p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka,poziom_zerowego_artykulu_poprz) if((not w_rozdziale) and(poziom_zerowego_artykulu>0) and(poziom_zerowego_naglowka>0))then if(p>1)then local czy_jest_nast=tab_lista_2[p-1]; if(czy_jest_nast)then local numer=tonumber(tab_lista_2[p-1][2][1]); if(numer>0)then poziom_zerowego_artykulu=0; end; else poziom_zerowego_artykulu=0; end; end; elseif(poziom_zerowego_artykulu==0)then poziom_zerowego_artykulu=poziom_zerowego_artykulu_poprz; end; return poziom_zerowego_artykulu; end; local function OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka) if((not czy_w_trakcie_dwukropkowania)and(mw.ustring.match(poziom_poczatku_artykulu,"^:")))then odejmnij_od_dwukropka=math.max((#poziom_poczatku_artykulu-(numer_poprz or 0)-1),0); czy_w_trakcie_dwukropkowania=true; elseif((czy_w_trakcie_dwukropkowania)and(not mw.ustring.match(poziom_poczatku_artykulu,"^:")))then odejmnij_od_dwukropka=0; czy_w_trakcie_dwukropkowania=nil; end; if(odejmnij_od_dwukropka>0)then poziom_artykulu=poziom_artykulu-odejmnij_od_dwukropka; if(poziom_artykulu<1)then poziom_artykulu=1; end; end; return poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania; end; local function PoziomNumeracji(numeracja_artykulu) if(numeracja_artykulu)then numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"^%s*%.*(.-)%.*%s*$","%1"); numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"%s+",""); numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"%.+","."); local tab_numeracja_artykulu=numeracja_artykulu and mw.text.split(numeracja_artykulu,"%s*%.%s*",false); local poziom_numeracji_artykulu=((numeracja_artykulu~="") and (#tab_numeracja_artykulu) or 0); return poziom_numeracji_artykulu; end; return 0; end; ----- local function UzyskajArtykul(artykul,pomin_link) local artykul=(not naglowek)and stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul,pomin_link) or stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(artykul,true,pomin_link); return artykul; end; ---- local nazwa_spisu=nil;local numer_spisu=nil; local prawdziwy_poziom_rozdzialu_poprz=nil; for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do local poziom_rozdzialu; local poziom_poczatku_rozdzialu=nil; local poziom_znakowy_rozdzialu=nil; local prawdziwy_poziom_rozdzialu=nil; local poziom_naglowka=nil; local poziom_naglowka_bez_poprawki=nil; local numer_rozdzialu=nil; local tab_numer_zapasowe=nil; local poziom_numeracji_rozdzialu=nil; local czy_jest_teraz_spis_tresci=nil; local czy_rozdzial_centrowany=nil; ----- local zbieraj_dane=true; ----- czy_nienilowy_rozdzial=tab_lista[1][2][1]; poziom_rozdzialu=czy_nienilowy_rozdzial or 0; ---- rozdzial=tab_lista[1][1]; ---- local czy_rozdzial_spisu=false; if((m==1)and(not numer_spisu)and(not nazwa_spisu))then if(czy_nienilowy_rozdzial==nil)then local spis=tab_lista[1]["spis"]; if(spis)then nazwa_spisu=spis[1]; numer_spisu=spis[2]; czy_rozdzial_spisu=true; pierwszy_dodatni_naglowek=false; pierwszy_ujemny_naglowek=false; glowny_spis_tresci_lub_rozdzial_ksiazki=false; end; end; elseif((m>2)and(numer_spisu)and(nazwa_spisu))then if(poziom_rozdzialu==1)then local spis=tab_lista[1]["spis"]; if(spis)then nazwa_spisu=spis[1]; numer_spisu=spis[2]; czy_rozdzial_spisu=true; pierwszy_dodatni_naglowek=false; pierwszy_ujemny_naglowek=false; glowny_spis_tresci_lub_rozdzial_ksiazki=false; end; end; end; ----- local function PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu) if(not poprz_czysty_poziom_rozdzialu_lub_artykulu)then staly_dodatek_rozdzialu={poziom_numeracji_rozdzialu,}; return poziom_naglowka,staly_dodatek_rozdzialu; end; if(poziom_naglowka==poprz_czysty_poziom_rozdzialu_lub_artykulu)then local poziom_numeracji=poziom_numeracji_rozdzialu-(staly_dodatek_rozdzialu[1] or 0); return poziom_naglowka+((poziom_numeracji>=0)and poziom_numeracji or 0),staly_dodatek_rozdzialu; elseif(poziom_naglowka~=poprz_czysty_poziom_rozdzialu_lub_artykulu)then staly_dodatek_rozdzialu={poziom_numeracji_rozdzialu,}; return poziom_naglowka,staly_dodatek_rozdzialu; end; end; local function PoziomNumerNaglowkaStalyDodatekRozdzialu(staly_dodatek_rozdzialu,poziom_naglowka,poprz_czysty_poziom_rozdzialu_lub_artykulu) if(parametry_modul.TypeTable(staly_dodatek_rozdzialu))then return 0; elseif(poziom_naglowka>poprz_czysty_poziom_rozdzialu_lub_artykulu)then local dodatek=(parametry_modul.TypeTable(staly_dodatek_rozdzialu) and staly_dodatek_rozdzialu[2] or 0); return dodatek; elseif(poziom_naglowka<poprz_czysty_poziom_rozdzialu_lub_artykulu)then local dodatek=(parametry_modul.TypeTable(staly_dodatek_rozdzialu) and staly_dodatek_rozdzialu[1] or 0); return dodatek; end; end; local function PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,poziom_rozdzialu,poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami) local function JedenDwa(poziom_poczatku_rozdzialu,poziom_poczatku_artykulu) return ((poziom_poczatku_artykulu)and(poziom_poczatku_rozdzialu) and(((mw.ustring.match(poziom_poczatku_rozdzialu,"^*")) and((mw.ustring.match(poziom_poczatku_artykulu,"^:")) or(mw.ustring.match(poziom_poczatku_artykulu,"^#")) ) )or((mw.ustring.match(poziom_poczatku_rozdzialu,"^#"))and(mw.ustring.match(poziom_poczatku_artykulu,"^:"))))); end; if(JedenDwa(poziom_poczatku_rozdzialu,poziom_poczatku_artykulu))then local roznica=poziom_rozdzialu-poziom_artykulu; if(roznica>=0)then staly_poziom_rozdzialu_z_artykulami=roznica+1; else staly_poziom_rozdzialu_z_artykulami=0; end; return (poziom_artykulu+staly_poziom_rozdzialu_z_artykulami),staly_poziom_rozdzialu_z_artykulami; elseif(JedenDwa(poziom_poczatku_artykulu,poziom_poczatku_rozdzialu))then staly_poziom_rozdzialu_z_artykulami=0; elseif(#poziom_poczatku_artykulu==0)then staly_poziom_rozdzialu_z_artykulami=0; end; return (poziom_artykulu+(staly_poziom_rozdzialu_z_artykulami or 0)),staly_poziom_rozdzialu_z_artykulami; end; local function CzyWliczacBezPoziomowo(p,i) if(naglowek)then return true;end; local tab=tab_lista[2]; if(not tab)then return false;end; if(p==i)then return true;end; local tab_artykul2={}; for k=p+1,i,1 do ----- local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab[k][1]); local artykul=czy_table_baza_artykulu and tab[k][1][1] or tab[k][1]; artykul=UzyskajArtykul(artykul); ----- if(k==i)then if((tab_artykul[artykul])or(tab_artykul2[artykul]))then return false; else return true; end; else tab_artykul2[artykul]=true; end; end; return false; end; local function IleNajblizejDalejBezPoziomowo(p) if(naglowek)then return (p+1);end; local tab=tab_lista[2]; if(not tab)then return (p+1);end; local tab_artykul2={}; local i=p+1; while(true)do if(not tab[i])then return i;end; ----- local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab[i][1]); local artykul=czy_table_baza_artykulu and tab[i][1][1] or tab[i][1]; artykul=UzyskajArtykul(artykul); ----- if((not tab_artykul[artykul])and(not tab_artykul2[artykul]))then return i; end; tab_artykul2[artykul]=true; i=i+1; end; return i; end; ---- local function AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulowa,czy_rozdzial,__FUNKCJA) local poziom_zerowego_naglowka_temp=poziom_zerowego_naglowka or 0; local poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka or 0; local staly_dodatek_artykulu=0; --local poprz_poziom_rozdzialu_lub_artykulu=poziom_naglowka; --local poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_naglowka_bez_poprawki; local staly_dodatek_rozdzialu_temp=staly_dodatek_rozdzialu or 0; local poczatek_poprz=nil; local ostatni_rozdzial_dodatni_temp=ostatni_rozdzial_dodatni; local ostatni_rozdzial_centrowany_temp=ostatni_rozdzial_centrowany; local poziom_zerowego_artykulu=0; local staly_poziom_rozdzialu_z_artykulami=0; local ostatni_artykul_w_rozdziale=nil; local czy_dwukropek=nil; local czy_rozdzial_centrowany_temp=nil; ---- local odejmnij_od_dwukropka=0; local czy_w_trakcie_dwukropkowania=nil; local poziom_znakowy_rozdzialu=tab_lista[1][2][1] or 0; local poziom_rozdzialu=math.abs(poziom_znakowy_rozdzialu); local numer_poprz=(poziom_znakowy_rozdzialu<0)and poziom_rozdzialu or nil; for p,artykul_w_bazie in ipairs(tab_lista_artykulowa)do if((czy_rozdzial and (p>m)) or (not czy_rozdzial))then if((not czy_rozdzial) and (CzyWliczacBezPoziomowo(1,p)) or czy_rozdzial)then local rozdzial=nil; local poziom_artykulu; if(czy_rozdzial)then artykul_w_bazie=artykul_w_bazie[1]; rozdzial=artykul_w_bazie[1]; czy_rozdzial_centrowany_temp=artykul_w_bazie[2][4]; poziom_artykulu=artykul_w_bazie[2][1]; if(poziom_artykulu==1)then local spis=artykul_w_bazie["spis"]; if(spis)then local nazwa_spisu_temp=spis[1]; local numer_spisu_temp=spis[2]; if((nazwa_spisu_temp)and(numer_spisu_temp))then return; end; end; end; else poziom_artykulu=artykul_w_bazie[2][1]; end; local czy_dwukropek_aktualnie=nil; if((czy_rozdzial)and(rozdzial)and(poziom_artykulu)and(poziom_artykulu==0))then czy_dwukropek_aktualnie=mw.ustring.match(rozdzial,":%s*$") czy_dwukropek=czy_dwukropek_aktualnie or czy_dwukropek; end; local poziom_znakowy_artykulu=poziom_artykulu; poziom_artykulu=math.abs(poziom_artykulu); local poziom_poczatku_artykulu=artykul_w_bazie[2][2]; ---- if((not czy_rozdzial)or((czy_rozdzial)and(poziom_znakowy_artykulu<0)))then poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka); end; ---- local w_rozdziale=(not czy_rozdzial) and artykul_w_bazie[2][4] or nil; if((not czy_rozdzial)and(not w_rozdziale))then local czy_poczatek_rozdzialu=(IleNajblizejDalejBezPoziomowo(p-1)>IleNajblizejDalejBezPoziomowo(0)); local __poziom_poczatku_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_poczatku_rozdzialu or poczatek_poprz; local __poziom_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_rozdzialu or poziom_artykulu; poziom_artykulu,staly_poziom_rozdzialu_z_artykulami=PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,__poziom_rozdzialu,__poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami); end; local poziom_srednikowego_naglowka_srednik=0; local czy_artykul_srednik; local poziom_srednikowego_naglowka_srednik_temp; if(czy_rozdzial)then if(poziom_znakowy_artykulu)then if(poziom_znakowy_artykulu==0)then poziom_zerowego_naglowka_temp=1; elseif(poziom_znakowy_artykulu>0)then poziom_zerowego_naglowka_temp=0; poziom_srednikowego_naglowka_temp=0; ostatni_rozdzial_dodatni_temp=(not czy_rozdzial_centrowany_temp) and ostatni_rozdzial_dodatni_temp or nil; czy_dwukropek=nil; else poziom_srednikowego_naglowka_srednik_temp=mw.ustring.match(poziom_poczatku_artykulu,"^;+.*$"); if(poziom_srednikowego_naglowka_srednik_temp)then poziom_srednikowego_naglowka_srednik=#poziom_srednikowego_naglowka_srednik_temp; poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka_srednik; end; end; end; else poziom_srednikowego_naglowka_srednik_temp=mw.ustring.match(poziom_poczatku_artykulu,"^;+.*$"); if(poziom_srednikowego_naglowka_srednik_temp)then poziom_srednikowego_naglowka_srednik=#poziom_srednikowego_naglowka_srednik_temp; poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka_srednik; czy_artykul_srednik=true; end; end; if((czy_rozdzial)and(poziom_znakowy_artykulu>0))then ostatni_rozdzial_dodatni_temp=0; ostatni_rozdzial_centrowany_temp=w_rozdziale and 0 or ostatni_rozdzial_centrowany_temp; end; local id=(not czy_rozdzial)and artykul_w_bazie[4] or nil; local poziom_zerowego_artykulu_aktualny=poziom_artykulu; local poziom_artykulu_zerowy; if(not czy_rozdzial)then local poziom_zerowego_artykulu_poprz=poziom_zerowego_artykulu; poziom_artykulu,poziom_zerowego_artykulu=ToNumberPoziomArtykulu(poziom_artykulu); poziom_artykulu_zerowy=poziom_artykulu; ---- poziom_zerowego_artykulu=ZerowyArtykul(tab_lista_artykulowa,p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka_temp,poziom_zerowego_artykulu_poprz); ---- poziom_artykulu=poziom_artykulu+poziom_zerowego_artykulu; end; if((not czy_rozdzial)and(poziom_znakowy_rozdzialu<0)and(rozdzial==""))then poziom_artykulu=poziom_artykulu+poziom_naglowka_bez_poprawki; else --- if(not czy_rozdzial)then poziom_zerowego_naglowka_temp=((not w_rozdziale)and(ostatni_artykul_w_rozdziale)and(poziom_zerowego_naglowka_temp>0)and(poziom_zerowego_artykulu_aktualny==0)) and (poziom_zerowego_naglowka_temp-1) or poziom_zerowego_naglowka_temp; end; poziom_artykulu=(((czy_rozdzial)and(--[[((ostatni_rozdzial_centrowany_temp or 0)>0)or]](poziom_znakowy_artykulu<=0))or(not czy_rozdzial))and ((ostatni_rozdzial_centrowany_temp or 0)+(ostatni_rozdzial_dodatni_temp or 0)+(poziom_zerowego_naglowka_temp+(((poziom_znakowy_artykulu)and(poziom_znakowy_artykulu==0)and(czy_dwukropek)and(not czy_dwukropek_aktualnie))and 1 or 0)+poziom_srednikowego_naglowka_temp)) or 0)+(((czy_rozdzial)and(poziom_znakowy_artykulu>0)and(not czy_rozdzial_centrowany_temp))and ostatni_rozdzial_centrowany_temp or 0)+((not poziom_srednikowego_naglowka_srednik_temp)and poziom_artykulu or 0)--[[+staly_dodatek_rozdzialu_temp]]+(id and 1 or 0); ----- if(czy_rozdzial)then if(poziom_znakowy_artykulu==0)then if(not czy_dwukropek_aktualnie)then poziom_zerowego_naglowka_temp=1+(czy_dwukropek and 1 or 0); else poziom_zerowego_naglowka_temp=2; end; end; end; end; if(not czy_rozdzial)then if(w_rozdziale)then ostatni_artykul_w_rozdziale=true else ostatni_artykul_w_rozdziale=false;end; end; if((czy_rozdzial)and(poziom_znakowy_artykulu>0))then if(w_rozdziale)then ostatni_rozdzial_dodatni_temp=nil; ostatni_rozdzial_centrowany_temp=poziom_znakowy_artykulu; else ostatni_rozdzial_dodatni_temp=poziom_znakowy_artykulu; end; end; poczatek_poprz=poziom_poczatku_artykulu; poziom_artykulu=poziom_artykulu+((czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); local wynik=__FUNKCJA(poziom_artykulu,poziom_naglowka_bez_poprawki,poziom_znakowy_artykulu,w_rozdziale,ostatni_rozdzial_centrowany_temp,{poziom_srednikowego_naglowka_temp,poziom_srednikowego_naglowka_srednik,},poziom_zerowego_naglowka_temp,poziom_artykulu_zerowy); ostatni_rozdzial_dodatni_temp=(czy_rozdzial_centrowany_temp) and poziom_artykulu or ostatni_rozdzial_dodatni_temp; if(not parametry_modul.TypeNil(wynik))then return wynik;end; local numer_baza=artykul_w_bazie[2][1]; local function __tonumber(liczba) if(czy_rozdzial)then if(liczba<0)then liczba=(liczba and (-liczba) or nil); return liczba; end; else return liczba; end; return nil; end; numer_poprz=(not w_rozdziale)and __tonumber(numer_baza) or ((w_rozdziale)and numer_poprz or nil); end; end; end; end; local function IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista_artykulowa,bez_sprawdzania) local ile_w_rozdziale=0; for s=1,#tab_lista_artykulowa[2],1 do if(bez_sprawdzania or CzyWliczacBezPoziomowo(1,s))then local w_rozdziale=tab_lista_artykulowa[2][s][2][4]; if(w_rozdziale)then ile_w_rozdziale=ile_w_rozdziale+1; else break; end; end; end; return ile_w_rozdziale end; local function KoniecSpisuTresci(poziom_naglowka_bez_poprawki,znak_poziom,czy_srednik) if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0))then local function UsunElementySpisTresci(tab_numer_temp) if(not tab_numer_temp)then return;end; local tab_numer_prawd;local HNumerPoziomow_prawd;local HNumerPoziomowNaglowkow_prawd; for i=#tab_numer_temp,1,-1 do local tab_naglowka=tab_numer_temp[i]; if((tab_naglowka[4]>=poziom_naglowka_bez_poprawki)or((tab_naglowka[5]<0)and((znak_poziom>0)or(czy_srednik))))then tab_numer_prawd=tab_naglowka[1]; HNumerPoziomow_prawd=tab_naglowka[2]; HNumerPoziomowNaglowkow_prawd=tab_naglowka[3] table.remove(tab_numer_temp,i); else break; end; end; if(tab_numer_prawd)then tab_numer=tab_numer_prawd; HNumerPoziomow=HNumerPoziomow_prawd; if(HNumerPoziomowNaglowkow_prawd)then HNumerPoziomowNaglowkow=HNumerPoziomowNaglowkow_prawd;end; return true; end; return nil; end; if(znak_poziom>0)then if(not UsunElementySpisTresci(tab_numer_baza_spis_tresci))then return;end; if(#tab_numer_baza_spis_tresci==0)then glowny_spis_tresci_lub_rozdzial_ksiazki=false; end; tab_poziomowo={}; end; end; end; ---- ----- tab_poziomowo={}; local rozdzial_bez_dwukropka=mw.ustring.match(rozdzial,"^%s*(.-)%s*:[%s:]*$") or rozdzial; czy_jest_teraz_spis_tresci=((m==1)and (czy_nienilowy_rozdzial and tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial_bez_dwukropka] or ((not czy_nienilowy_rozdzial)and true or false)) or ((m>1)and tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial_bez_dwukropka] or false)); poziom_spisu_tresci_dodatek=(czy_jest_teraz_spis_tresci and ((poziom_rozdzialu==0)and 1 or 0) or (poziom_spisu_tresci_dodatek or 0)); local czy_nie_ten_rozdzial; if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0))then czy_nie_ten_rozdzial=false; glowny_spis_tresci_lub_rozdzial_ksiazki=true; else glowny_spis_tresci_lub_rozdzial_ksiazki=false; if((not czy_jest_teraz_spis_tresci)and(nie_wszystkie))then czy_nie_ten_rozdzial=tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu[rozdzial_bez_dwukropka]; end; end; if((m==1)and(not czy_nienilowy_rozdzial))then czy_pierwszy_nilowy=true; czy_pierwszy_nilowy_rozdzial=true; end; if(not czy_nie_ten_rozdzial)then if(poziomowo)then prawdziwy_poziom_rozdzialu=poziom_rozdzialu; poziom_poczatku_rozdzialu=tab_lista[1][2][2]; local numeracja_rozdzialu=tab_lista[1][2][3]; poziom_numeracji_rozdzialu=PoziomNumeracji(numeracja_rozdzialu); czy_rozdzial_centrowany=tab_lista[1][2][4]; ---- local czy_z_dwukropkiem=nil; ---- if(poziom_rozdzialu<0)then poziom_rozdzialu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(-poziom_rozdzialu,poziom_poczatku_rozdzialu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka); numer_poprz=-tab_lista[1][2][1] or 0; poziom_rozdzialu=-poziom_rozdzialu; else numer_poprz=nil; czy_w_trakcie_dwukropkowania=nil; odejmnij_od_dwukropka=0; end; local czy_sredniki; ----- poprzedni_poziom_znakowy_rozdzialu=poziom_znakowy_rozdzialu; poziom_znakowy_rozdzialu=poziom_rozdzialu; poziom_rozdzialu=math.abs(poziom_rozdzialu); local poprzedni_tab_poziomowo_temp=poprzedni_tab_poziomowo; if(poziom_znakowy_rozdzialu>0)then poziom_naglowka=poziom_rozdzialu+(czy_rozdzial_centrowany and 0 or (ostatni_rozdzial_centrowany or 0)); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_spisu_tresci_dodatek=0; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); poziom_pierwszego_ujemnego_spisu_tresci=nil; ---- ostatni_poczatek_artykulu=nil; pierwszy_rowny_rozdzial=nil; ---- if((m>2)or(not czy_pierwszy_nilowy))then poprzedni_tab_poziomowo=nil; end; poziom_zerowego_naglowka=0; poziom_srednikowego_naglowka=0; if(glowny_ujemny_rozdzial)then HNumerPoziomow=HNumerPoziomow_4; HNumerPoziomow_4=nil; tab_numer=tab_numer_4; poziom_pierwszego_ujemnego_naglowka=nil; glowny_ujemny_rozdzial=nil; ---- ---- if((poprz_ujemnego_rozdzialu_dodatniego_rozdzialu)and(poprz_ujemnego_rozdzialu_dodatniego_rozdzialu>0))then pierwszy_ujemny_naglowek=nil; end; end; KoniecSpisuTresci(poziom_naglowka_bez_poprawki,1); if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0)and(not spis_tresci))then numer_rozdzialu=HNumerPoziomow(poziom_naglowka,1); spis_tresci=true; pierwszy_rozdzial_dodatni=1; else if(not pierwszy_rozdzial_dodatni)then pierwszy_rozdzial_dodatni=1; numer_rozdzialu=HNumerPoziomow(poziom_naglowka,1); else numer_rozdzialu=HNumerPoziomow(poziom_naglowka); end; end; if(czy_rozdzial_centrowany)then ostatni_rozdzial_dodatni=nil; ostatni_rozdzial_centrowany=poziom_rozdzialu; else ostatni_rozdzial_dodatni=poziom_rozdzialu; end; elseif(poziom_znakowy_rozdzialu<0)then czy_sredniki=mw.ustring.match(poziom_poczatku_rozdzialu,"^(;+)"); if(czy_sredniki)then poziom_zerowego_naglowka=0; ---- ostatni_poczatek_artykulu=nil; pierwszy_rowny_rozdzial=nil; ---- if(glowny_ujemny_rozdzial)then HNumerPoziomow=HNumerPoziomow_4; HNumerPoziomow_4=nil; tab_numer=tab_numer_4; poziom_pierwszego_ujemnego_naglowka=nil; glowny_ujemny_rozdzial=nil; ---- ---- if((poprz_ujemnego_rozdzialu_dodatniego_rozdzialu)and(poprz_ujemnego_rozdzialu_dodatniego_rozdzialu>0))then pierwszy_ujemny_naglowek=nil; end; end; ---- poziom_srednikowego_naglowka=poziom_rozdzialu; poziom_naglowka=(ostatni_rozdzial_centrowany or 0) + (ostatni_rozdzial_dodatni or 0) + poziom_zerowego_naglowka + poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); numer_rozdzialu=HNumerPoziomow(poziom_naglowka); poziom_znakowy_rozdzialu=-poziom_srednikowego_naglowka; poziom_rozdzialu=poziom_srednikowego_naglowka; KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1,true); else if(not pierwszy_rowny_rozdzial)then if((ostatni_poczatek_artykulu) and(#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu) and(mw.ustring.match(ostatni_poczatek_artykulu,"^*")) and(mw.ustring.match(poziom_poczatku_rozdzialu,"^:")) )then poziom_rozdzialu=poziom_rozdzialu+1; poziom_znakowy_rozdzialu=-poziom_rozdzialu; pierwszy_rowny_rozdzial=1; poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); else poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); end; else if((not ostatni_poczatek_artykulu)or((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^*"))))then pierwszy_rowny_rozdzial=0; elseif((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^:")))then pierwszy_rowny_rozdzial=1; elseif((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^#")))then pierwszy_rowny_rozdzial=nil; end; poziom_rozdzialu=poziom_rozdzialu+(pierwszy_rowny_rozdzial or 0); poziom_znakowy_rozdzialu=-poziom_rozdzialu; poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); end; ---- KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1); ---- numer_rozdzialu=HNumerPoziomow(poziom_naglowka); local numer_rozdzialu_dodatniego=HNumerPoziomowNaglowkow(0) or 0; if(numer_rozdzialu_dodatniego>=numer_rozdzialu)then numer_rozdzialu=HNumerPoziomow(poziom_naglowka,numer_rozdzialu_dodatniego+1); end; end; else if((m>1)or((m==1)and(not czy_pierwszy_nilowy)))then local poziom_zerowego_naglowka_temp=poziom_zerowego_naglowka; czy_z_dwukropkiem=mw.ustring.match(rozdzial,":%s*$"); local dodatek=((czy_z_dwukropkiem)and 1 or 0); poziom_zerowego_naglowka=1+((not czy_z_dwukropkiem)and ((poziom_zerowego_naglowka_temp==2) and 1 or 0) or 1); poziom_naglowka=1+(((not czy_z_dwukropkiem)and(poziom_zerowego_naglowka_temp==2))and 1 or 0)+ (ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0) + 0+poziom_srednikowego_naglowka; poziom_naglowka_bez_poprawki=poziom_naglowka; poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu); KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1); numer_rozdzialu=HNumerPoziomow(poziom_naglowka); poziom_znakowy_rozdzialu=-1; poziom_rozdzialu=1; else poziom_zerowego_naglowka=0; numer_rozdzialu=0; poziom_naglowka=(ostatni_rozdzial_centrowany or 0); poziom_naglowka_bez_poprawki=poziom_naglowka; staly_dodatek_rozdzialu=0; end; end; if(poziom_znakowy_rozdzialu>0)then local numer=HNumerPoziomowNaglowkow(poziom_naglowka); elseif(poziom_znakowy_rozdzialu<0)then end; if(poziom_rozdzialu>0)then if(((czy_ostatni_rozdzial_jest_centrowany)and(ostatni_rozdzial_centrowany or 0)>0)and(#tab_numer>0)and(tab_numer[#tab_numer]==0)and(#tab_numer<=numer_rozdzialu))then tab_numer[#tab_numer]=nil; numer_rozdzialu=HNumerPoziomow(poziom_naglowka,((numer_rozdzialu>1)and(numer_rozdzialu-1) or 1)); czy_ostatni_rozdzial_jest_centrowany=nil; elseif(poprzedni_tab_poziomowo)then local lens=math.min(#poprzedni_tab_poziomowo,numer_rozdzialu-#tab_numer); local len_tab_numer=#tab_numer; local min_lens=math.min(#poprzedni_tab_poziomowo,lens); for i=1,min_lens,1 do tab_numer[len_tab_numer+i]=poprzedni_tab_poziomowo[i]; end; for i=min_lens+1,#tab_numer do tab_numer[len_tab_numer+i]=nil; end; end; if(#tab_numer<numer_rozdzialu)then for i=#tab_numer+1,numer_rozdzialu,1 do table.insert(tab_numer,1); end; elseif(#tab_numer>numer_rozdzialu)then for i=#tab_numer, numer_rozdzialu+1,-1 do table.remove(tab_numer,i); end; tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0) + 1; else tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0) + 1; end; end; local function CzyJestONumerzeMniejszymLubRownymPoziomieNizAktualnyRozdzial() if(poziom_rozdzialu==0)then return true;end; if(poziom_znakowy_rozdzialu>0)then local ile_w_rozdziale_w_naglowku_artykulow=IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista,true); return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_aktualnego_naglowka,poziom_naglowka,poziom_znakowy_naglowka,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(ile_w_rozdziale_w_naglowku_artykulow>0)then return true;end; if(poziom_znakowy_naglowka>0)then if(poziom_aktualnego_naglowka<=poziom_naglowka)then return true; end; end; end); elseif(((m==1) or(((m==2)and(czy_pierwszy_nilowy_rozdzial))or((tab_lista_artykulow_w_ksiazce[m-1]) and((tab_lista_artykulow_w_ksiazce[m-1][1][2][1] or 0)>0)and(tab_lista_artykulow_w_ksiazce[m-1][2])and(#tab_lista_artykulow_w_ksiazce[m-1][2]==IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista_artykulow_w_ksiazce[m-1],true))))) and(poziom_znakowy_rozdzialu<0))then local czy_artykuly=nil;local tak_wynik=nil; if(tab_lista[2])then local czy_w_rozdziale_artykuly=nil; local wynik=AnalizaArtykulowaLubRozdzialowa(tab_lista[2],nil,function(poziom_artykulu,poziom_naglowka,_,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(not w_rozdziale)then czy_artykuly=true; --[[if(((((not czy_z_dwukropkiem)and(czy_w_rozdziale_artykuly))or(poziom_artykulu-(poziom_zerowego_naglowka or 0)<=poziom_naglowka)or(poziom_artykulu-(poziom_srednikowego_naglowka[1] or 0)<=poziom_naglowka))and(poziom_artykulu_zerowy)and(poziom_artykulu_zerowy==0)and(poziom_zerowego_naglowka)and(poziom_zerowego_naglowka>0))and((m>2)or((m==2)and(not czy_pierwszy_nilowy_rozdzial))))then return true; end;]] if(poziom_artykulu<=poziom_naglowka)then return true; end; else czy_w_rozdziale_artykuly=true; end; end); tak_wynik=wynik; end; if((czy_artykuly)or(m==1))then local wynik=AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_aktualnego_naglowka,poziom_naglowka,poziom_znakowy_naglowka,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(poziom_znakowy_naglowka<=0)then if(poziom_aktualnego_naglowka<=poziom_naglowka)then --if((poziom_srednikowego_naglowka[2])and(poziom_srednikowego_naglowka[2]>0))then --return false; --else return true; --end; end; else if((m==1)and(poziom_znakowy_rozdzialu<0)and(poziom_znakowy_naglowka>0))then return true;end; return false; end end); if(wynik~=nil)then return wynik;end; if(tak_wynik~=nil)then return tak_wynik;end; return true; else return true; end; else return true; end; end; local function DodajNaSamPoczatek() local function ArtykulyNieWRozdziale() local ile=0; if(tab_lista[2])then for p,artykul_w_bazie in ipairs(tab_lista[2])do local w_rozdziale=artykul_w_bazie[2][4]; if(not w_rozdziale)then ile=ile+1; end; end; end; return ile; end; if((tab_lista_artykulow_w_ksiazce[m+1])and(ArtykulyNieWRozdziale()>0) and(( (poziom_znakowy_rozdzialu>0) and AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(poziom_znakowy_rozdzialu>0)then if(poziom_artykulu>poziom_naglowka)then return true; end; end; return false; end) )or( (poziom_znakowy_rozdzialu<0) and AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka_temp,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if((poziom_srednikowego_naglowka_temp[2])and(poziom_srednikowego_naglowka)and(poziom_srednikowego_naglowka_temp[2]>poziom_srednikowego_naglowka))then if(poziom_znakowy_rozdzialu<0)then if(poziom_artykulu>poziom_naglowka)then return true; end; end; end; return false; end) )) )then if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; table.insert(tab_numer,0); return true; else if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; return false; end; end; if((m==1)and(czy_pierwszy_nilowy)and(poziom_znakowy_rozdzialu==0))then if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; tab_numer={}; elseif((czy_jest_teraz_spis_tresci)and((poziom_znakowy_rozdzialu>0)or(poziom_znakowy_rozdzialu<0)))then local function Poziom_dodatni_lub_ujemny() return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(poziom_artykulu>poziom_naglowka)then return true; elseif(czy_sredniki)then return true; end; return false; end); end; local function czy_inaczej_numeruj_rozdzial_dodatni() return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],false,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(not w_rozdziale)then if(poziom_artykulu>poziom_naglowka)then return true; end; return false; end; end); end; local function czy_inaczej_numeruj_rozdzial_ujemny() return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],nil,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(poziom_artykulu>poziom_naglowka)then return true; end; end); end; if((poziom_znakowy_rozdzialu>0)and((czy_inaczej_numeruj_rozdzial_dodatni())or(Poziom_dodatni_lub_ujemny())))then glowny_spis_tresci_lub_rozdzial_ksiazki=true; if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; ---- if(not tab_poziomowo_1)then tab_poziomowo_1={};end; table.insert(tab_poziomowo_1,{tab_poziomowo,poziom_naglowka_bez_poprawki,}); ---- tab_poziomowo={}; tab_numer_zapasowe=tab_numer; ------ if(not tab_numer_baza_spis_tresci)then tab_numer_baza_spis_tresci={};end; table.insert(tab_numer_baza_spis_tresci,{tab_numer,HNumerPoziomow,HNumerPoziomowNaglowkow,poziom_naglowka_bez_poprawki,1,}); ----- HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); spis_tresci=false; ----- tab_numer={}; elseif((poziom_znakowy_rozdzialu<0)and((czy_inaczej_numeruj_rozdzial_ujemny())or(Poziom_dodatni_lub_ujemny())))then glowny_spis_tresci_lub_rozdzial_ksiazki=true; if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; ---- if(not tab_poziomowo_1)then tab_poziomowo_2={};end; table.insert(tab_poziomowo_2,{tab_poziomowo,poziom_naglowka_bez_poprawki,}); ---- tab_poziomowo={}; tab_numer_zapasowe=tab_numer; ----- if(not tab_numer_baza_spis_tresci)then tab_numer_baza_spis_tresci={};end; table.insert(tab_numer_baza_spis_tresci,{tab_numer,HNumerPoziomow,nil,poziom_naglowka_bez_poprawki,-1,}); spis_tresci=false; ----- HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); ----- tab_numer={}; end; local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek(); if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; elseif(((not czy_jest_teraz_spis_tresci)and(not czy_rozdzial_spisu)and(((not pierwszy_dodatni_naglowek)and(poziom_znakowy_rozdzialu>0)) or(((not pierwszy_ujemny_naglowek)or((prawdziwy_poziom_rozdzialu_poprz)and(prawdziwy_poziom_rozdzialu_poprz>0)))and(poziom_znakowy_rozdzialu<0)))) and(not CzyJestONumerzeMniejszymLubRownymPoziomieNizAktualnyRozdzial()))and((not czy_pierwszy_nilowy_rozdzial)or((#tab_numer~=1)or(tab_numer[1]==1)))then glowny_spis_tresci_lub_rozdzial_ksiazki=true; if(poziom_rozdzialu>0)then if(poziom_znakowy_rozdzialu>0)then if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; ---- HNumerPoziomowNaglowkow_2=HNumerPoziomowNaglowkow; HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); tab_numer_zapasowe=tab_numer; tab_numer_3=tab_numer; tab_numer={}; HNumerPoziomow_3=HNumerPoziomow; HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); pierwszy_dodatni_naglowek=true; poziom_pierwszego_dodatniego_naglowka=poziom_rozdzialu; glowny_dodatni_rozdzial=true; else if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; ---- tab_numer_zapasowe=tab_numer; tab_numer_4=tab_numer; tab_numer=parametry_modul["KopiujTabelęElementów"](tab_numer); tab_numer[#tab_numer]=nil; HNumerPoziomow_4=HNumerPoziomow; HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); if(poprz_poziom_rozdzialu_lub_artykulu)then numer_rozdzialu=HNumerPoziomow(poprz_poziom_rozdzialu_lub_artykulu,#tab_numer); end; pierwszy_ujemny_naglowek=true; poprz_ujemnego_rozdzialu_dodatniego_rozdzialu=(m>1) and prawdziwy_poziom_rozdzialu_poprz or false; poziom_pierwszego_ujemnego_naglowka=poziom_rozdzialu; glowny_ujemny_rozdzial=true; end; else if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; end; local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek(); if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; else local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek(); if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; ---- if(wartosc)then else if(zbieraj_dane)then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; zbieraj_dane=false; end; end; end; -- end; zbieraj_dane=true; poprz_numeracji_rozdzialu_lub_artykulu=poziom_numeracji_rozdzialu; poprz_poziom_rozdzialu_lub_artykulu=poziom_naglowka; poprz_numer_rozdzialu_lub_artykulu=numer_rozdzialu; poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_naglowka_bez_poprawki; prawdziwy_poziom_rozdzialu_poprz=prawdziwy_poziom_rozdzialu; ----- if(((not czy_rozdzial_spisu))and((m>1)or((m==1)and(not czy_pierwszy_nilowy_rozdzial))))then if(prawdziwy_poziom_rozdzialu>0)then pierwszy_dodatni_naglowek=true; pierwszy_ujemny_naglowek=nil; else pierwszy_ujemny_naglowek=true; pierwszy_dodatni_naglowek=true; end; end; ---- czy_ostatni_rozdzial_jest_centrowany=((poziom_znakowy_rozdzialu>0)and(czy_rozdzial_centrowany and true or nil) or ((poziom_znakowy_rozdzialu<=0)and czy_ostatni_rozdzial_jest_centrowany or nil)); else local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; if((tab_lista[2])and(parametry_modul["CzySąElementyNumerowaneTablicy"](tab_lista[2])))then local HNumerArtykulu=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local HNumerPoziomu=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local czy_dwukropek_artykulu=nil; local stare_HNumerArtykulu=nil; local stare_HNumerPoziomu=nil; local czy_tytul_rozdzial=nil; local czy_ma_elementy=nil; ostatni_poczatek_artykulu=nil; local czy_zera=nil; local ile_w_rozdziale=nil; local poprz_poziom_artykulu_bez_b=nil; local k=1; ----- local czy_w_rozdziale_rejestrowane_osobno_artykuly=nil; local artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=nil; local czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=nil; ----- local numer_poprz_w_rozdziale=nil; local poczatek_poprz=nil; local id_poprz=nil; local tab_poprzedni_artykul_w_bazie=nil; local odejmnij_od_dwukropka_w_rozdziale=0; ----- local czy_w_trakcie_dwukropkowania_w_rozdziale=nil; ----- local poziom_zerowego_artykulu=0; local staly_poziom_rozdzialu_z_artykulami=0; local nilowanie_poprzedniego_rejestru_tab_poziomowo=nil; local czy_w_podreczniku_poprz=nil; ----- local stare_HNumerPoziomu_poza_rozdzialem=nil; local ile_w_rozdziale_licznik=1; local staly_dodatek_rozdzialu_temp=0; local staly_dodatek_rozdzialu_roz=staly_dodatek_rozdzialu; local staly_dodatek_artykulu=0; local ostatni_artykul_w_rozdziale=nil; local tab_numer_w_rozdziale=nil; local podrozdzial_spisu=nil; local dodatek_poprz=nil; ----- for p,artykul_w_bazie in ipairs(tab_lista[2])do local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]); local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1]; local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil; local Przekierowanie=function(przekierowanie) return (((parametry_modul.TypeString(przekierowanie))and(przekierowanie))or(parametry_modul.TypeTable(przekierowanie)and(((przekierowanie[1])and((przekierowanie[2])or(przekierowanie[3])))or(przekierowanie[1]))and(przekierowanie[1]..(przekierowanie[2] and ("?"..(przekierowanie[2] or "")) or "")..(przekierowanie[3] and ("#"..(przekierowanie[3] or "")) or "")))); end; local czy_w_podreczniku=artykul_w_bazie[5]; local czy_inna_ksiazka; if(czy_table_baza_artykulu)then local czy_table_dane=parametry_modul.TypeTable(artykul_w_bazie[1][4]); if(czy_table_dane)then czy_inna_ksiazka=artykul_w_bazie[1][4][5]; end; end; local czy_url=czy_table_baza_artykulu and artykul_w_bazie[1][9] or nil; local przekierowanie=(czy_w_podreczniku) and (czy_table_baza_artykulu and ((not artykul_w_bazie[1][4])and(not artykul_w_bazie[1][7]) and Przekierowanie(artykul_w_bazie[1][3]) or {Przekierowanie(artykul_w_bazie[1][3]),artykul_w_bazie[1][4],nil,nil,artykul_w_bazie[1][7],}) or nil) or (((not czy_w_podreczniku)and(czy_table_baza_artykulu)and(artykul_w_bazie[1][5])or(artykul_w_bazie[1][6])or(artykul_w_bazie[1][7])) and {nil,nil,artykul_w_bazie[1][5],artykul_w_bazie[1][6],artykul_w_bazie[1][7],} or nil); --- local czy_dodane_lub_kolega=czy_table_baza_artykulu and artykul_w_bazie[1][8] or nil; local czy_dodane=parametry_modul.TypeBoolean(czy_dodane_lub_kolega) and czy_dodane_lub_kolega or nil; local ile_dodano=parametry_modul.TypeNumber(czy_dodane_lub_kolega) and czy_dodane_lub_kolega or nil; ---- artykul=UzyskajArtykul(artykul); ---- if(naglowek or not tab_artykul[artykul])then pierwszy_rowny_rozdzial=nil; czy_ma_elementy=true; if(not naglowek)then tab_artykul[artykul]=true; end; local tab_artykul_w_bazie; local w_rozdziale; if(poziomowo)then local poziom_artykulu=artykul_w_bazie[2][1]+(ile_dodano or 0); local poziom_poczatku_artykulu=artykul_w_bazie[2][2]; ---- local czy_poczatek_rozdzialu=(IleNajblizejDalejBezPoziomowo(p-1)>IleNajblizejDalejBezPoziomowo(0)); w_rozdziale=artykul_w_bazie[2][4]; poziom_artykulu=poziom_artykulu+(w_rozdziale and 1 or 0)+((((ile_dodano)and(ile_dodano>0))and(w_rozdziale))and 1 or 0); if(w_rozdziale)then poziom_artykulu,odejmnij_od_dwukropka_w_rozdziale,czy_w_trakcie_dwukropkowania_w_rozdziale=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz_w_rozdziale or 0,czy_w_trakcie_dwukropkowania_w_rozdziale,odejmnij_od_dwukropka_w_rozdziale); numer_poprz_w_rozdziale=tonumber(tab_lista[2][p][2][1]); else poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka); end; ---- local numeracja_artykulu=artykul_w_bazie[2][3]; local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu); local czy_rozdzial_z_poczatkiem_jedynki=nil; if(w_rozdziale)then if(not stare_HNumerPoziomu_poza_rozdzialem)then stare_HNumerPoziomu_poza_rozdzialem=HNumerPoziomow; HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer(); ----- tab_numer_w_rozdziale=tab_numer; tab_numer=tab_numer_zapasowe or tab_numer; end; local function CzyRozdzialMaArtykulyNieWewnetrzNaglowka() local czy_artykuly=nil; return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],false,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if(not w_rozdziale)then czy_artykuly=true; if(poziom_artykulu>poziom_naglowka)then return true; end; return false; end; end),czy_artykuly; end; local function CzyRozdzialMaRozdzialyNieWewnetrzNaglowka() return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu_artykulu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy) if((poziom_znakowy_rozdzialu<0)and(poziom_znakowy_rozdzialu_artykulu>0))then return false; else if(poziom_artykulu>poziom_naglowka)then return true; end; return false; end; end); end; if(not ile_w_rozdziale)then ile_w_rozdziale=IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista,false); end; if(ile_w_rozdziale_licznik==ile_w_rozdziale)then czy_w_trakcie_dwukropkowania_w_rozdziale=nil; odejmnij_od_dwukropka_w_rozdziale=0; numer_poprz_w_rozdziale=nil; ostatni_artykul_w_rozdziale=true; end; ile_w_rozdziale_licznik=ile_w_rozdziale_licznik+1; if((poziom_znakowy_rozdzialu>0)and(ile_w_rozdziale==1))then local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,{},nil,tab_lista[2][p][5],przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; czy_w_rozdziale_rejestrowane_osobno_artykuly=true; elseif(not artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka)then artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=true; if(parametry_modul.TypeNil(czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka))then local czy_ma_artykuly; czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka,czy_ma_artykuly=CzyRozdzialMaArtykulyNieWewnetrzNaglowka(); if((not czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka)and(not czy_ma_artykuly))then czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=CzyRozdzialMaRozdzialyNieWewnetrzNaglowka(); end; end; if((czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka)and(not glowny_ujemny_rozdzial))then tab_numer[#tab_numer+1]=0; end; end; else if((artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka)or(czy_w_rozdziale_rejestrowane_osobno_artykuly))then ----- tab_poziomowo={}; HNumerPoziomu=stronicowyparser_potrzebne_modul.LiczonyHNumer(); HNumerArtykulu=stronicowyparser_potrzebne_modul.LiczonyHNumer(); ----- artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=nil; czy_w_rozdziale_rejestrowane_osobno_artykuly=nil; ---- k=1; tab_poprzedni_artykul_w_bazie=nil; end; --- if(not czy_zera)then if((((not czy_nienilowy_rozdzial)and(m==1))or((czy_nienilowy_rozdzial)and(m>=1)))and(k==1))then local numer=tab_lista[2][p][2][1]; local poczatek=tab_lista[2][p][2][2]; if(((not czy_nienilowy_rozdzial)and(mw.ustring.match(poczatek,"^:")))or(numer+poziom_numeracji_artykulu==0))then for s=p+1,#tab_lista[2],1 do if(CzyWliczacBezPoziomowo(p,s))then local numer=tab_lista[2][s][2][1]; local poczatek=tab_lista[2][s][2][2]; local numeracja_artykulu=tab_lista[2][s][2][3]; local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu); if((mw.ustring.match(poczatek,"^#"))or(numer+poziom_numeracji_artykulu>0))then if(((#tab_numer>0)and(tab_numer[#tab_numer]~=0))or(#tab_numer==0))then table.insert(tab_numer,0); end; tab_poziomowo={}; czy_zera=true; break; elseif((not mw.ustring.match(poczatek,"^:"))and(not(#poczatek==0)))then break; end; end; end; end; end; else local numer=tonumber(tab_lista[2][p][2][1]); local poczatek=tab_lista[2][p][2][2]; local id=tab_lista[2][p][4]; local function DodajUsunNumerek(jedno,drugie,trzecie) if((not jedno)and(not drugie)and(not trzecie))then return;end; if((#tab_numer>(HNumerPoziomowNaglowkow(0) or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka))then czy_zera=false; tab_poziomowo={}; table.remove(tab_numer,#tab_numer); if(#tab_numer>0)then tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0)+1; end; czy_rozdzial_z_poczatkiem_jedynki=true; end; end; DodajUsunNumerek(((mw.ustring.match(poczatek_poprz,"^:"))and(mw.ustring.match(poczatek,"^#"))),((#poczatek_poprz==0)and(not id_poprz)and(#poczatek>0)and(not id)),((#poczatek_poprz+poprz_numeracji_rozdzialu_lub_artykulu==0)and(numer+poziom_numeracji_artykulu>0))); end; if((not czy_zera) and((k==1)and(not w_rozdziale)and(tab_lista_artykulow_w_ksiazce[m+1]) and(((m==1)and(not czy_nienilowy_rozdzial)and(((artykul_w_bazie[2][1]+poziom_numeracji_artykulu)==0)or(tab_lista_artykulow_w_ksiazce[m+1][1][2][1]>0))) or((m>1)and(czy_nienilowy_rozdzial)and((artykul_w_bazie[2][1]+poziom_numeracji_artykulu)==0))) ))then local czy_sa_jakies_artykuly_niezerowe=false;local ile=0; local poziom_zerowy=artykul_w_bazie[2][1]+poziom_numeracji_artykulu; if(poziom_zerowy)then for h,artykul_w_bazie in ipairs(tab_lista[2])do if(h>p)then local poziom_artykulu=artykul_w_bazie[2][1]; local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu); if(poziom_artykulu+poziom_numeracji_artykulu>0)then czy_sa_jakies_artykuly_niezerowe=true; break; end; end; end; for h,artykul_w_bazie in ipairs(tab_lista[2])do if(h>=p)then ile=ile+1; end; end; end; if(((poziom_zerowy==0)and(czy_sa_jakies_artykuly_niezerowe)or(not czy_nienilowy_rozdzial))or(poziom_zerowy>0))then if(ile<=5)then table.insert(tab_numer,0); else nilowanie_poprzedniego_rejestru_tab_poziomowo=true; end end; end; end; ostatni_poczatek_artykulu=poziom_poczatku_artykulu; ----- local poziom_zerowego_artykulu_poprz=poziom_zerowego_artykulu; poziom_artykulu,poziom_zerowego_artykulu=ToNumberPoziomArtykulu(poziom_artykulu); local poziom_zerowego_artykulu_aktualny=poziom_artykulu; poziom_zerowego_artykulu=ZerowyArtykul(tab_lista[2],p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka,poziom_zerowego_artykulu_poprz); ---- local czy_sredniki=mw.ustring.match(poziom_poczatku_artykulu,"^(;+)"); if(czy_sredniki)then poziom_zerowego_naglowka=0; if(glowny_ujemny_rozdzial)then HNumerPoziomow=HNumerPoziomow_4; HNumerPoziomow_4=nil; tab_numer=tab_numer_4; poziom_pierwszego_ujemnego_naglowka=nil; glowny_ujemny_rozdzial=nil; ---- end; KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1,true); end; ---- local poziom_czysty_artykulu=poziom_artykulu; ---- local __poziom_poczatku_rozdzialu= (not czy_poczatek_rozdzialu) and poziom_poczatku_rozdzialu or poczatek_poprz; local __poziom_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_rozdzialu or poziom_artykulu; poziom_artykulu,staly_poziom_rozdzialu_z_artykulami=PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,__poziom_rozdzialu,__poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami); ---- poziom_zerowego_naglowka=czy_sredniki and 0 or poziom_zerowego_naglowka; poziom_zerowego_artykulu=czy_sredniki and 0 or poziom_zerowego_artykulu; ---- poziom_srednikowego_naglowka=czy_sredniki and 0 or poziom_srednikowego_naglowka; ---- poziom_zerowego_naglowka=((ostatni_artykul_w_rozdziale)and(not w_rozdziale)and(poziom_zerowego_naglowka>0)and(poziom_zerowego_artykulu_aktualny==0)) and (poziom_zerowego_naglowka-1) or poziom_zerowego_naglowka; if((ostatni_artykul_w_rozdziale)and(not w_rozdziale))then ostatni_artykul_w_rozdziale=nil; end; ---- if((poziom_znakowy_rozdzialu<0)and(rozdzial==""))then poziom_artykulu=poziom_naglowka+poziom_artykulu+poziom_zerowego_artykulu+(poziom_spisu_tresci_dodatek or 0); else poziom_artykulu=poziom_artykulu+poziom_zerowego_artykulu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+((not czy_sredniki)and poziom_srednikowego_naglowka or 0)+(poziom_spisu_tresci_dodatek or 0); end; ---- local poziom_podany_artykulu_bez_numeracji=poziom_artykulu; poziom_artykulu=poziom_artykulu+(poziom_numeracji_artykulu or 0); ---- local __poprz_poziom_rozdzialu_lub_artykulu=((poziom_znakowy_rozdzialu>0) and poprz_poziom_rozdzialu_lub_artykulu or poziom_naglowka); local __poprz_czysty_poziom_rozdzialu_lub_artykulu=(poziom_znakowy_rozdzialu>0) and poprz_czysty_poziom_rozdzialu_lub_artykulu or poziom_numeracji_rozdzialu; if(not w_rozdziale)then if(k==1)then staly_dodatek_rozdzialu_temp=staly_dodatek_rozdzialu_roz; end; end; poziom_artykulu,staly_dodatek_rozdzialu_temp--[[staly_dodatek]]=PoziomNumerNaglowka(poziom_podany_artykulu_bez_numeracji,poziom_numeracji_artykulu,__poprz_poziom_rozdzialu_lub_artykulu,__poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu_temp--[[staly_dodatek]]); if(not w_rozdziale)then staly_dodatek_rozdzialu=staly_dodatek_rozdzialu_temp;end; ---- local prefix_poziom_artykulu=poziom_artykulu; local function WielopoziomowyAdres(poziom_artykulu,poprz_poziom_artykulu_bez_b,tab_poprzedni_artykul_w_bazie,staly_dodatek_artykulu) local b=0; local tab_artykul_w_bazie=mw.text.split(artykul,"/"); if((tab_poprzedni_artykul_w_bazie)and((czy_w_podreczniku_poprz)and(czy_w_podreczniku)))then if((#tab_artykul_w_bazie>1)or(#tab_poprzedni_artykul_w_bazie>1))then for c=1,#tab_artykul_w_bazie,1 do local podstrona_artykul=tab_artykul_w_bazie[c]; local podstrona_poprzedni_artykul=tab_poprzedni_artykul_w_bazie[c]; if(podstrona_artykul==podstrona_poprzedni_artykul)then b=b+1; else break; end; end; end; else if(k==1)then if(#tab_artykul_w_bazie>1)then local podrozdzial_artykulu=tab_artykul_w_bazie[1]; podrozdzial_artykulu=parametry_modul["Odstępy"]{[1]=podrozdzial_artykulu,[2]="tak",}; podrozdzial_artykulu=mw.getContentLanguage():ucfirst(podrozdzial_artykulu); if(not podrozdzial_spisu)then podrozdzial_spisu=parametry_modul["Odstępy"]{[1]=rozdzial,[2]="tak",}; podrozdzial_spisu=mw.getContentLanguage():ucfirst(podrozdzial_spisu); end; local czy_z_rozdzialem=(podrozdzial_artykulu==podrozdzial_spisu); if(czy_z_rozdzialem)then b=1;end; end; end end; if((#tab_artykul_w_bazie==b)and(#tab_poprzedni_artykul_w_bazie==b))then b=b-1;end; if(not poprz_poziom_artykulu_bez_b)then staly_dodatek_artykulu={b,true}; return 0,staly_dodatek_artykulu,tab_artykul_w_bazie; end; if(poziom_artykulu==poprz_poziom_artykulu_bez_b)then if((k>=2)and(czy_w_podreczniku)and(staly_dodatek_artykulu[2])and(staly_dodatek_artykulu[1]==0)and(#tab_poprzedni_artykul_w_bazie>1)and(b>0)and(#tab_poprzedni_artykul_w_bazie>=b+1))then staly_dodatek_artykulu[1]=b; staly_dodatek_artykulu[2]=false; end; if(((k==2)or(staly_dodatek_artykulu[3]))and(not czy_w_podreczniku))then staly_dodatek_artykulu[3]=k; elseif((k>2)and(czy_w_podreczniku)and((staly_dodatek_artykulu[3] or 0)+2==k)and(b>0))then staly_dodatek_artykulu[3]=nil; staly_dodatek_artykulu[1]=b; end; local poziom_numeracji=b-(staly_dodatek_artykulu[1] or 0); return ((czy_w_podreczniku)and ((poziom_numeracji>=0)and poziom_numeracji or 0)or(dodatek_poprz)),staly_dodatek_artykulu,tab_artykul_w_bazie; elseif(poziom_artykulu~=poprz_poziom_artykulu_bez_b)then staly_dodatek_artykulu={b,true}; if((k==2)and(not czy_w_podreczniku))then staly_dodatek_artykulu[3]=k; end; return 0,staly_dodatek_artykulu,tab_artykul_w_bazie; end; return 0,staly_dodatek_artykulu,tab_artykul_w_bazie; end; ----- local dodatek; dodatek,staly_dodatek_artykulu,tab_artykul_w_bazie=WielopoziomowyAdres(poziom_artykulu,poprz_poziom_artykulu_bez_b,tab_poprzedni_artykul_w_bazie,staly_dodatek_artykulu); poprz_poziom_artykulu_bez_b=poziom_artykulu; local numer_poziomu=HNumerPoziomow(poziom_artykulu); ----- if(not w_rozdziale)then if(poziom_znakowy_rozdzialu<0)then if(poziom_artykulu<=(poziom_pierwszego_ujemnego_naglowka or 0))then tab_poziomowo=tab_numer_4; tab_numer={}; HNumerPoziomu=HNumerPoziomow_4; HNumerArtykulu(poziom_artykulu,HNumerPoziomu(0)); else local numer=numer_rozdzialu-numer_poziomu; if(numer>=0)then local tab_numer_s=tab_numer; local tab_poziomowo_s=tab_poziomowo; tab_numer={};tab_poziomowo={}; if(#tab_numer_s>=numer_poziomu-1)then for i=1,numer_poziomu-1,1 do tab_numer[i]=tab_numer_s[i]; end; for i=numer_poziomu,#tab_numer_s,1 do tab_poziomowo[i-numer_poziomu+1]=tab_numer_s[i]; end; for i=1,#tab_poziomowo_s,1 do tab_poziomowo[i+#tab_numer_s-numer_poziomu+1]=tab_poziomowo_s[i]; end; else for i=1,#tab_numer_s,1 do tab_numer[i]=tab_numer_s[i]; end; for i=1,numer_poziomu-1,1 do tab_numer[i+#tab_numer_s]=tab_poziomowo_s[i]; end; for i=numer_poziomu,#tab_poziomowo_s,1 do tab_poziomowo[i-numer_poziomu+1]=tab_poziomowo_s[i]; end; end; end; end; end; end; if(not czy_w_rozdziale_rejestrowane_osobno_artykuly)then if((not w_rozdziale)and(poziomowo)and(poziom_znakowy_rozdzialu<0))then if((numer_rozdzialu>=numer_poziomu)and(numer_poziomu>=1))then HNumerPoziomu(poziom_artykulu,1); HNumerArtykulu(poziom_artykulu,1); end; end; local stala=poziom_artykulu; if(czy_rozdzial_z_poczatkiem_jedynki)then HNumerPoziomu(stala,1); HNumerArtykulu(stala,1); end; local numer_poziomu=HNumerPoziomu(stala); poziom_artykulu=stala+dodatek; local numer=HNumerArtykulu(poziom_artykulu); local roznica=numer_poziomu-numer; if(roznica>0)then numer=HNumerArtykulu(poziom_artykulu,numer_poziomu); end; if(#tab_poziomowo<numer)then for i=#tab_poziomowo+1,numer,1 do table.insert(tab_poziomowo,1); end; else if(#tab_poziomowo>numer)then for i=#tab_poziomowo,numer+1,-1 do table.remove(tab_poziomowo,i); end; end; tab_poziomowo[#tab_poziomowo]=(tab_poziomowo[#tab_poziomowo] or 0)+1; end; end; ---- tab_poprzedni_artykul_w_bazie=tab_artykul_w_bazie; poprz_numeracji_rozdzialu_lub_artykulu=poziom_numeracji_artykulu; poprz_poziom_rozdzialu_lub_artykulu=poziom_artykulu; poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_podany_artykulu_bez_numeracji; poziom_srednikowego_naglowka=czy_sredniki and poziom_czysty_artykulu or poziom_srednikowego_naglowka; numer_poprz=(not w_rozdziale)and tonumber(tab_lista[2][p][2][1]) or ((w_rozdziale)and numer_poprz or nil); poprz_numer_rozdzialu_lub_artykulu=numer_poziomu; poczatek_poprz=tab_lista[2][p][2][2]; id_poprz=tab_lista[2][p][4]; czy_w_podreczniku_poprz=czy_w_podreczniku; dodatek_poprz=dodatek; end; local wartosc; if(not czy_w_rozdziale_rejestrowane_osobno_artykuly)then wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,nil,tab_lista[2][p][5],przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url); if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; if(not poziomowo)then i=i+1; else if((ostatni_artykul_w_rozdziale)and(w_rozdziale))then HNumerPoziomow=stare_HNumerPoziomu_poza_rozdzialem; stare_HNumerPoziomu_poza_rozdzialem=nil; tab_numer=tab_numer_w_rozdziale; poprzedni_tab_poziomowo=nil; ----- poziom_zerowego_artykulu=0; ----- czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=nil; if((#tab_numer>0)and(tab_numer[#tab_numer]==0))then tab_numer[#tab_numer]=nil; end; else if(not nilowanie_poprzedniego_rejestru_tab_poziomowo)then poprzedni_tab_poziomowo=tab_poziomowo; else poprzedni_tab_poziomowo={1,}; end; end; end; k=k+1; end; end; if(not czy_ma_elementy)then poprzedni_tab_poziomowo=nil; end; else poprzedni_tab_poziomowo=nil; end; end; end; return; end; local function ZamienNumerArtykuluNaTabele(numer_artykulu) local tab_numer_artykulu=mw.text.split(numer_artykulu,".",true); return tab_numer_artykulu; end; local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) if(#tab_numer_artykulu<=1)then return tab_numer_artykulu;end; local stronicowyparser_modul=require("Module:StronicowyParser"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local parametry_modul=require("Module:Parametry"); local nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly=stronicowyparser_modul["DaneUkładuAutonawigacji"](frame,tabela_listy_danych_analizy_ksiazki); if((not tab_inne_spisy)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tab_inne_spisy)))then return tab_numer_artykulu;end; local tab_w_spis={}; for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do local poziom_rozdzialu=tab_lista[1][2][1]; if(tab_lista[2])then for p,artykul_w_bazie in ipairs(tab_lista[2])do if((m>1)and(poziom_rozdzialu==1))then break;end; local czy_table_baza_artykulu=parametry_modul.TypeTable(artykul_w_bazie[1]); local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1]; local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil; local czy_artykul=nil; for _,tab_lub_str in ipairs(tab_inne_spisy)do local czy_tab_lub_str=parametry_modul.TypeTable(tab_lub_str); if(czy_tab_lub_str)then if(tab_lub_str[1]==artykul)then czy_artykul=true; end; else if(tab_lub_str==artykul)then czy_artykul=true; end; end; end; if(czy_artykul)then tab_w_spis[artykul]=true; end; end; end; end; local czy_w_spis=true; for _,name in ipairs(tab_inne_spisy)do local czy_table_name=parametry_modul.TypeTable(name); czy_w_spis=czy_w_spis and tab_w_spis[czy_table_name and name[1] or name]; if(not czy_w_spis)then break;end; end; if(not czy_w_spis)then return tab_numer_artykulu; end; if((tab_numer_artykulu)and(#tab_numer_artykulu>1)and(tab_numer_artykulu[1])and(tab_numer_artykulu[1]=='1'))then table.remove(tab_numer_artykulu,1); end; if((tab_numer_artykulu)and(#tab_numer_artykulu>1)and(tab_numer_artykulu[1])and(tab_numer_artykulu[1]=='1'))then local nazwa_spisu,numer_spisu; local czy_jedno=true;local pierwszy_rozdzial; for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do local poziom_rozdzialu=tab_lista[1][2][1]; if(m>1)then if(poziom_rozdzialu==1)then break; elseif(m==2)then pierwszy_rozdzial=poziom_rozdzialu; elseif(m>2)then czy_jedno=czy_jedno and pierwszy_rozdzial and (pierwszy_rozdzial<poziom_rozdzialu); end; end; end; if(czy_jedno)then table.remove(tab_numer_artykulu,1); end; end; return tab_numer_artykulu; end; local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu) local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu); if(#tab_numer_artykulu<1)then return tab_numer_artykulu;end; local tab_numer_spisu=ZamienNumerArtykuluNaTabele(numer_spisu); local lens=#tab_numer_spisu; for i=lens,1,-1 do if(i==lens)then tab_numer_artykulu[1]=tab_numer_spisu[i]; else table.insert(tab_numer_artykulu,1,tab_numer_spisu[i]); end; end; return tab_numer_artykulu; end; p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki) local s=1; local parametry_modul=require("Module:Parametry"); local args_kopia; local tab_spis; local dane_szablonu; local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki) ---- dane_szablonu=dane_szablonu or pierwszy_parametr_szablonu(); local nazwa_artykulu,czy_nazwa,dane=dane_szablonu[1],dane_szablonu[2],dane_szablonu[3]; ---- if((((dane==2)or(dane==3))and(artykul=="")and(rozdzial==nazwa_artykulu))or(((dane==1)or(dane==3))and(artykul~="")and((nazwa_artykulu==artykul)or(((przekierowanie)and(parametry_modul.TypeString(przekierowanie))and(przekierowanie==nazwa_artykulu))or(parametry_modul.TypeTable(przekierowanie)and(przekierowanie[1]==nazwa_artykulu))))))then if(s==ktory)then if(poziomowo)then local numer_artykulu=(table.concat(tab_numer,".")..((#tab_numer>0) and ((#tab_poziomowo>0) and "." or "") or "")..table.concat(tab_poziomowo,".")); if((not nazwa_spisu)or(not numer_spisu) or ((not glowny_spis_tresci_lub_rozdzial_ksiazki)and((tonumber(numer_artykulu) or 1)>1)) or((glowny_spis_tresci_lub_rozdzial_ksiazki)and((numer_spisu or 1)>1)) )then return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki; elseif((numer_spisu)and(numer_spisu==1))then if(glowny_spis_tresci_lub_rozdzial_ksiazki)then return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki; else local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu); tab_numer_artykulu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu); return table.concat(tab_numer_artykulu,"."),glowny_spis_tresci_lub_rozdzial_ksiazki; end; end; local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci; if((not tab_spis)or(not tab_spis[nazwa_spisu]))then if(not args_kopia)then local args=parametry_modul.PobierzArgsParametry(frame,true); args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args); end; args_kopia[1]=nazwa_spisu; if(not tab_spis)then tab_spis={};end; tab_spis[nazwa_spisu]={}; numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=PobierzNumerLubNazweArtykulu({args=args_kopia,},tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,}; else local tab_element=tab_spis[nazwa_spisu]; numer_spisu_tresci=tab_element[1]; glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2]; end; if(not numer_spisu_tresci)then return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki;end; local tab_numer_artykulu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu_tresci); tab_numer_artykulu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) or tab_numer_artykulu; return table.concat(tab_numer_artykulu,"."),glowny_spis_tresci_lub_rozdzial_ksiazki; else return i,glowny_spis_tresci_lub_rozdzial_ksiazki; end; end; s=s+1; end; end; local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; end; p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki) local s=1; local parametry_modul=require("Module:Parametry"); local args_kopia; local tab_spis; local dane_szablonu; local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki) ---- dane_szablonu=dane_szablonu or pierwszy_parametr_szablonu(); local numer,czy_nazwa,dane=dane_szablonu[1],dane_szablonu[2],dane_szablonu[3]; ---- if((not poziomowo)and(i==numer))then if(s==ktory)then if(artykul~="")then local wartosc=(not czy_nazwa) and artykul or (nazwa or artykul); return wartosc; else return rozdzial; end; else s=s+1; end; elseif(poziomowo)then local function NumerArtykulu(tab_numer,tab_poziomowo) return (table.concat(tab_numer,".")..((#tab_numer>0) and ((#tab_poziomowo>0) and "." or "") or "")..table.concat(tab_poziomowo,".")); end; local function WynikArtykulowyZNumeru(numer_artykulu) if((((dane==2)or(dane==3))and(artykul=="")and(numer_artykulu==numer))or(((dane==1)or(dane==3))and(artykul~="")and(numer_artykulu==numer)))then if(s==ktory)then if(artykul~="")then local wartosc=(not czy_nazwa) and artykul or (nazwa or artykul); return wartosc; else return rozdzial; end; else s=s+1; end; end; end; local numer_artykulu=NumerArtykulu(tab_numer,tab_poziomowo); if((not nazwa_spisu)or(not numer_spisu) or ((not glowny_spis_tresci_lub_rozdzial_ksiazki)and((tonumber(numer_artykulu) or 1)>1)) or((glowny_spis_tresci_lub_rozdzial_ksiazki)and((numer_spisu or 1)>1)) )then local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; elseif((numer_spisu)and(numer_spisu==1))then if(glowny_spis_tresci_lub_rozdzial_ksiazki)then local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; else local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu); tab_numer_artykulu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu); local numer_artykulu=table.concat(tab_numer_artykulu,"."); local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; else local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci; if((not tab_spis)or(not tab_spis[nazwa_spisu]))then if(not args_kopia)then local args=parametry_modul.PobierzArgsParametry(frame,true); args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args); end; args_kopia[1]=nazwa_spisu; numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki); if(not tab_spis)then tab_spis={};end; tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,}; else local tab_element=tab_spis[nazwa_spisu]; numer_spisu_tresci=tab_element[1]; glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2]; end; if(not numer_spisu_tresci)then local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; local tab_numer_artykulu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu_tresci); tab_numer_artykulu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) or tab_numer_artykulu; local numer_artykulu=table.concat(tab_numer_artykulu,"."); local wynik=WynikArtykulowyZNumeru(numer_artykulu); if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end; end; end; end; local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; end; p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki,kodowanie_nie_json) local tab_dane_ksiazki=nil; local s=1; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local args_kopia; local tab_spis; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu); setmetatable(tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); local pierwszy_spis_tresci=nil; local artykul_spisowy=nil; local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url) if((artykul_spisu)and(nazwa_spisu))then if((artykul_spisu~=nazwa_spisu))then if(not artykul_spisowy)then return false;else return true;end; elseif((not artykul_spisowy)and(artykul_spisu==nazwa_spisu))then artykul_spisowy=true; end; end; if(not tab_dane_ksiazki)then tab_dane_ksiazki={};end; if(not tab_dane_ksiazki[rozdzial])then tab_dane_ksiazki[rozdzial]={};end; local tab_rozdzial=tab_dane_ksiazki[rozdzial]; local numer_rozdzialu=tab_numer and table.concat(tab_numer,".") or ""; if((nazwa_spisu)and(numer_spisu)and(not glowny_spis_tresci_lub_rozdzial_ksiazki)and(numer_rozdzialu~=""))then local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci; if((numer_spisu)and(numer_spisu==1))then if(not glowny_spis_tresci_lub_rozdzial_ksiazki)then local tab_numer_rozdzialu=ZamienNumerArtykuluNaTabele(numer_rozdzialu); tab_numer_rozdzialu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu); numer_rozdzialu=table.concat(tab_numer_rozdzialu,"."); end; else if((not tab_spis)or(not tab_spis[nazwa_spisu]))then if(not args_kopia)then local args=parametry_modul.PobierzArgsParametry(frame,true); args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args); end; args_kopia[1]=nazwa_spisu; numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki); if(not tab_spis)then tab_spis={};end; tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,}; else local tab_element=tab_spis[nazwa_spisu]; numer_spisu_tresci=tab_element[1]; glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2]; end; if(numer_spisu_tresci)then local tab_numer_rozdzialu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_rozdzialu,numer_spisu_tresci); tab_numer_rozdzialu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu) or tab_numer_rozdzialu; numer_rozdzialu=table.concat(tab_numer_rozdzialu,"."); end; end; elseif((not pierwszy_spis_tresci)and(nazwa_spisu)and(numer_spisu)and(glowny_spis_tresci_lub_rozdzial_ksiazki)and(numer_rozdzialu~=""))then local czy_spis_tresci=tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial]; if(czy_spis_tresci)then pierwszy_spis_tresci=true; local tab_numer_rozdzialu=ZamienNumerArtykuluNaTabele(numer_rozdzialu); tab_numer_rozdzialu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu); numer_rozdzialu=table.concat(tab_numer_rozdzialu,"."); end; end; if(not tab_rozdzial[numer_rozdzialu])then tab_rozdzial[numer_rozdzialu]={}; end; local tab_numer_rozdzialu=tab_rozdzial[numer_rozdzialu]; if(not tab_numer_rozdzialu[artykul])then tab_numer_rozdzialu[artykul]={}; end; local tab_artykul=tab_numer_rozdzialu[artykul]; local numer_artykulu=tab_poziomowo and table.concat(tab_poziomowo,".") or ""; if(not tab_artykul[numer_artykulu])then tab_artykul[numer_artykulu]={}; end; local tab_numer_artykulu=tab_artykul[numer_artykulu]; local czy_tabelka=parametry_modul.TypeTable(przekierowanie); ---- table.insert(tab_numer_artykulu,{["przekierowanie"]=czy_tabelka and przekierowanie[1] or ((not czy_tabelka) and przekierowanie or nil),["kod języka"]=czy_tabelka and przekierowanie[3] or nil,["kod projektu"]=czy_tabelka and przekierowanie[4] or nil,["pełna nazwa książki"]=(czy_tabelka and przekierowanie[2]) and nazwy_modul["NazwaModułu"](przekierowanie[2][1],przekierowanie[2][2],przekierowanie[2][3],"") or nil,["link"]=czy_tabelka and przekierowanie[5] or nil,["nazwa"]=nazwa,["spis treści"]=czy_nienilowy_rozdzial,["czy w podręczniku"]=(((artykul~="")or(numer_artykulu~="")) and ((czy_artykuly_podrecznikowe) and true or nil) or nil),["dodane"]=czy_dodane,["numer"]=s,["inna książka"]=czy_inna_ksiazka,["url"]=czy_url,}); ---- s=s+1; return false; end; PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; end; return p; khf9ac0ntarsmzp3nnbk466cfnjohcx Moduł:StronicowyParser/NumeracjaObiektówStron 828 60331 547845 543865 2026-07-20T07:26:25Z Persino 2851 547845 Scribunto text/plain local p={}; function p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local parametry_modul=require("Module:Parametry"); ----- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ----- for nazwa_przestrzeni2,tablica_nazw_przestrzeni_ksiazek in pairs(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)do for nazwa_przestrzeni_ksiazki2, tablica_nazw_ksiazek in pairs(tablica_nazw_przestrzeni_ksiazek)do for nazwa_ksiazki2,tablica_nazw_artykulow in pairs(tablica_nazw_ksiazek)do local tablica_artykulow={}; local tab_ksiazki=tablica_nazw_artykulow.spis; local czy_da_sie_numerowac_obiekty_ze_spisem_tresci=false; if(tab_ksiazki)then local i=1; for _,tab_rozdzialu in pairs(tab_ksiazki)do if(tab_rozdzialu[2])then for _,tab_dane_nazwa_artykulu_spisu in ipairs(tab_rozdzialu[2])do local czy_tabelka_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_dane_nazwa_artykulu_spisu[1]); local tab_nazwa_artukulu_link=czy_tabelka_artykulu and tab_dane_nazwa_artykulu_spisu[1][1] or tab_dane_nazwa_artykulu_spisu[1]; local artykul=stronicowyparser_potrzebne_modul.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_nazwa_artukulu_link); if(artykul)then tablica_artykulow[artykul]=i; i=i+1; end; end; end; end; if(parametry_modul["CzySąElementyTablicy"](tablica_artykulow))then czy_da_sie_numerowac_obiekty_ze_spisem_tresci=true; end; end; for nazwa_artykulu2, dane_artykulu in pairs(tablica_nazw_artykulow.lista_podstron_woluminu) do local biezacy_artykul=dane_artykulu.artykul_biezacy; local numer_obiektu_w_ksiazce=tablica_artykulow[nazwa_artykulu2] or 0; local function Problemy_z_doloczonymi_uchywtami(nazwa_obiektu) stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"błędy uchwytów dołączonych stron",nazwa_obiektu,nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2); end; if((czy_da_sie_numerowac_obiekty_ze_spisem_tresci)and(nazwa_artykulu2~=""))then p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self,dane_artykulu,biezacy_artykul,numer_obiektu_w_ksiazce,stronicowyparser_obiekty_modul,Problemy_z_doloczonymi_uchywtami); else p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self,dane_artykulu,biezacy_artykul,0,stronicowyparser_obiekty_modul,Problemy_z_doloczonymi_uchywtami); end; end; end; end; end; for _,obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local obiekt2=obiekt[1]; p.SprawdzanieReferencji(self,tablica_zmiennych,tablica_zmiennych.linkobiekt[obiekt2],obiekt2,((obiekt.CzyLink) and ("Link") or ("Pobierz"))..obiekt2, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,stronicowyparser_obiekty_modul,obiekt.CzyNum); end; end; function p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja) for _,element_w_podtablicy_kategorii_bledow in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local element_obiekty=element_w_podtablicy_kategorii_bledow[1]; p.SprawdzanieOrazNumerowanieElementowychFormStrony(self,dane_artykulu,biezacy_artykul,element_obiekty,numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja); end; end; function p.SprawdzanieReferencji(self,tablica_zmiennych,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu,stronicowyparser_obiekty_modul,CzyNum) local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu2))or(nazwa_artykulu==""))then for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie in ipairs(link_obiekt_lub_wypowiedzenie) do local czy_uchwyty_nie_sa_ponumerowane=true; for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie2 in ipairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu1]) do if(elementy_w_tablicy_obiekt_lub_wypowiedzenie==elementy_w_tablicy_obiekt_lub_wypowiedzenie2[1])then if(CzyNum)then if(elementy_w_tablicy_obiekt_lub_wypowiedzenie2[2])then czy_uchwyty_nie_sa_ponumerowane=false; break; end; else czy_uchwyty_nie_sa_ponumerowane=false; break; end; end; end; if(czy_uchwyty_nie_sa_ponumerowane)then local czy_tylko_ze_znakami_odstepu_lub_puste=mw.ustring.match(elementy_w_tablicy_obiekt_lub_wypowiedzenie,"^%s*$"); if(czy_tylko_ze_znakami_odstepu_lub_puste)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu1,1)) then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu1,1); end; return; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu2); return; end; end; end; end; end; function p.SprawdzanieOrazNumerowanieElementowychFormStrony(self, dane_artykulu, biezacy_artykul, nazwa_obiektu, numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja) local parametry_modul=require("Module:Parametry"); if(not dane_artykulu.uchwyty_i_numeracje)then return;end; local tabela_obiektu=dane_artykulu.uchwyty_i_numeracje[nazwa_obiektu]; if(not tabela_obiektu)then return;end; local CzyLink=tabela_obiektu.CzyLink; local CzyNum=tabela_obiektu.CzyNum; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); for licznik,element_obiektu in ipairs(tabela_obiektu)do local czy_numerowac=true; for licznik2=1, licznik-1,1 do if((tabela_obiektu[licznik2][1])and(element_obiektu[1]==tabela_obiektu[licznik2][1]))then if(biezacy_artykul)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu); end; else __Funkcja(nazwa_obiektu); end; if(((CzyLink)and(CzyNum))or(not CzyLink))then tabela_obiektu[licznik2][2]=nil; czy_numerowac=false; end; break; end; end; if(CzyNum)then if(czy_numerowac)then if(numer_artykulu_w_ksiazce>0)then element_obiektu[2]=numer_artykulu_w_ksiazce.."."..licznik; elseif(numer_artykulu_w_ksiazce==0)then element_obiektu[2]=licznik; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"); end; end; end; end; end; return p; fxhizc0q82jl9rhwsaepsay36s77gtj Wikibooks:Moduły/StronicowyParser 4 63511 547839 547783 2026-07-20T04:42:19Z Persino 2851 /* Spis treści */ 547839 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 == * {{lru|Moduły/StronicowyParser}} procedur stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych. ** {{lr|Moduły/StronicowyParser/Tom I|StronicowyParser - Tom I}} - funkcje główne stronicowego parsera, uruchamiane w stronicowych szablonach, które są zawarte w podkategoriach: {{lk2|Szablony stronicowe}}, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy}} - * {{lru|Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}} - * {{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}} - 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 dla jego podmodułów, ** {{lr|Moduły/StronicowyParser/SpisTreści/Tom I|SpisTreści - Tom I}} - funkcje do ładowania pojedynczego spisu treści, ** {{lr|Moduły/StronicowyParser/SpisTreści/Tom II|SpisTreści - Tom II}} - funkcje do ładowania jego, wielu, a nawet przygotowania dodatkowych elementów spisów, a mianowicie dalszych artykułó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 rekurencyjne, * {{lru|Moduły/StronicowyParser/ZbieranieDanychStron}} - 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> cvmx61f0kpovrlfw9afiymtkcb4agqv Wikibooks:Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek 4 63515 547822 547781 2026-07-20T02:40:18Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547822 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9zogo7lg0n4homkvkjkqmxrlo73b3tm 547823 547822 2026-07-20T02:41:02Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547823 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9r00p3c9ap0c95kbq0e4j1ymeb90j5o 547824 547823 2026-07-20T02:50:12Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547824 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. Jest tworzona pusta nowa zmienna tablicowa {{Code|tab_dane_ksiazki}} {{Patrz|tab_dane_ksiazki}}, a następnie jest tworzona jego pusta podtablica o kluczu {{Code|rozdzial}} {{Patrz|rozdzial}}. Dalej jest tworzona zmienna {{Code|numer_rozdzialu}} {{Patrz|numer_rozdzialu}} ze zmiennej tablicowej {{Code|tab_numer}} {{LinkPatrz|tab_numer}} z łącznikiem kropka przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fepn50n6ubknirck1wyd8lzv4kb7bfo 547825 547824 2026-07-20T02:51:12Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547825 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. Jest tworzona pusta nowa zmienna tablicowa {{Code|tab_dane_ksiazki}} {{Patrz|tab_dane_ksiazki}}, a następnie jest tworzona jego pusta podtablica o kluczu {{Code|rozdzial}} {{LinkPatrz|rozdzial}}. Dalej jest tworzona zmienna {{Code|numer_rozdzialu}} {{Patrz|numer_rozdzialu}} ze zmiennej tablicowej {{Code|tab_numer}} {{LinkPatrz|tab_numer}} z łącznikiem kropka przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> iql5u0idpwpdldlg6hr37mupy4r47l9 547828 547825 2026-07-20T03:34:13Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547828 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. Jest tworzona pusta nowa zmienna tablicowa {{Code|tab_dane_ksiazki}} {{Patrz|tab_dane_ksiazki}}, a następnie jest tworzona jego pusta podtablica o kluczu {{Code|rozdzial}} {{LinkPatrz|rozdzial}}. Dalej jest tworzona zmienna {{Code|numer_rozdzialu}} {{Patrz|numer_rozdzialu}} ze zmiennej tablicowej {{Code|tab_numer}} {{LinkPatrz|tab_numer}} z łącznikiem kropka przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. {{Tab}}Gdy {{LinkPatrz|nazwa_spisu}} i numer spisu {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieją, a {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki)}} już nie, i jednocześnie {{LinkPatrz|numer_rozdzialu}} jest łańcuchem znaków niepustym, wtedy liczymy: Jeśli {{LinkPatrz|numer_spisu}} jest równy {{Code|1}}, czyli jest pierwszym spisem treści, i w podinstukcji {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, co dalej w tym są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co dalej to jest zamieniane na numerację rozdziału {{LinkPatrz|numer_rozdzialu}} z tym samym łącznikiem tą samą funkcją, co na samym początku tego rozważania przy tej zmiennej. Przeciwnie niż w poprzednim akapicie jest liczony numer spisu treści z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}, co jest łączone z {{LinkPatrz|numer_rozdzialu}} w większy numer rozdziału dzięki: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}, a jeśli spis znajduje się w spisie jako artykuł, nie jako w głównym rozdziale, wtedy są usuwane początkowe jedynki według: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co następie jest tworzone ostateczna wersja numeru rozdziału z tab otrzymanej tabeli w łańcuch znaków {{LinkPatrz|numer_rozdzialu}}. {{Tab}}Jeśli spis nie będzie pierwszy {{Code|pierwszy_spis_tresci}} {{LinkPatrz|pierwszy_spis_tresci}}, a nazwa spisu {{LinkPatrz|nazwa_spisu}} i numer spisu {{LinkPatrz|numer_spisu}}, a także {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, istnieją, i {{LinkPatrz|numer_rozdzialu}} nie jest rozdziałem o ciągu pustym, A jeśli rozdział jest spisem treści, czy spisem rzeczy, wtedy jest ustawiana prawdziwość zmiennej {{LinkPatrz|pierwszy_spis_tresci}}, wtedy dla {{LinkPatrz|numer_rozdziału}} jest zamieniane na tabelę, dzięki: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}. Co dalej są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co to później jest zamienane łańcuch znaków w: {{LinkPatrz|numer_rozdzialu}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6bebboijed07fzftgdqsr1kyudidpl3 547830 547828 2026-07-20T03:39:52Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547830 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. Jest tworzona pusta nowa zmienna tablicowa {{Code|tab_dane_ksiazki}} {{Patrz|tab_dane_ksiazki}}, a następnie jest tworzona jego pusta podtablica o kluczu {{Code|rozdzial}} {{LinkPatrz|rozdzial}}. Dalej jest tworzona zmienna {{Code|numer_rozdzialu}} {{Patrz|numer_rozdzialu}} ze zmiennej tablicowej {{Code|tab_numer}} {{LinkPatrz|tab_numer}} z łącznikiem kropka przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. {{Tab}}Gdy {{LinkPatrz|nazwa_spisu}} i numer spisu {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieją, a {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki)}} już nie, i jednocześnie {{LinkPatrz|numer_rozdzialu}} jest łańcuchem znaków niepustym, wtedy liczymy: Jeśli {{LinkPatrz|numer_spisu}} jest równy {{Code|1}}, czyli jest pierwszym spisem treści, i w podinstukcji {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, co dalej w tym są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co dalej to jest zamieniane na numerację rozdziału {{LinkPatrz|numer_rozdzialu}} z tym samym łącznikiem tą samą funkcją, co na samym początku tego rozważania przy tej zmiennej. Przeciwnie niż w poprzednim akapicie jest liczony numer spisu treści z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}, co jest łączone z {{LinkPatrz|numer_rozdzialu}} w większy numer rozdziału dzięki: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}, a jeśli spis znajduje się w spisie jako artykuł, nie jako w głównym rozdziale, wtedy są usuwane początkowe jedynki według: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co następie jest tworzone ostateczna wersja numeru rozdziału z tab otrzymanej tabeli w łańcuch znaków {{LinkPatrz|numer_rozdzialu}}. {{Tab}}Jeśli spis nie będzie pierwszy {{Code|pierwszy_spis_tresci}} {{Patrz|pierwszy_spis_tresci}}, a nazwa spisu {{LinkPatrz|nazwa_spisu}} i numer spisu {{LinkPatrz|numer_spisu}}, a także {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, istnieją, i {{LinkPatrz|numer_rozdzialu}} nie jest rozdziałem o ciągu pustym, A jeśli rozdział jest spisem treści, czy spisem rzeczy, wtedy jest ustawiana prawdziwość zmiennej {{LinkPatrz|pierwszy_spis_tresci}}, wtedy dla {{LinkPatrz|numer_rozdziału}} jest zamieniane na tabelę, dzięki: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}. Co dalej są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co to później jest zamienane łańcuch znaków w: {{LinkPatrz|numer_rozdzialu}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> tuka53vl84eccuq4huu7911iwt3sues 547831 547830 2026-07-20T03:41:23Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547831 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. Jest tworzona pusta nowa zmienna tablicowa {{Code|tab_dane_ksiazki}} {{Patrz|tab_dane_ksiazki}}, a następnie jest tworzona jego pusta podtablica o kluczu {{Code|rozdzial}} {{LinkPatrz|rozdzial}}. Dalej jest tworzona zmienna {{Code|numer_rozdzialu}} {{Patrz|numer_rozdzialu}} ze zmiennej tablicowej {{Code|tab_numer}} {{LinkPatrz|tab_numer}} z łącznikiem kropka przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. {{Tab}}Gdy {{LinkPatrz|nazwa_spisu}} i numer spisu {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieją, a {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki)}} już nie, i jednocześnie {{LinkPatrz|numer_rozdzialu}} jest łańcuchem znaków niepustym, wtedy liczymy: Jeśli {{LinkPatrz|numer_spisu}} jest równy {{Code|1}}, czyli jest pierwszym spisem treści, i w podinstukcji {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, co dalej w tym są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co dalej to jest zamieniane na numerację rozdziału {{LinkPatrz|numer_rozdzialu}} z tym samym łącznikiem tą samą funkcją, co na samym początku tego rozważania przy tej zmiennej. Przeciwnie niż w poprzednim akapicie jest liczony numer spisu treści z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}, co jest łączone z {{LinkPatrz|numer_rozdzialu}} w większy numer rozdziału dzięki: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}, a jeśli spis znajduje się w spisie jako artykuł, nie jako w głównym rozdziale, wtedy są usuwane początkowe jedynki według: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co następie jest tworzone ostateczna wersja numeru rozdziału z tab otrzymanej tabeli w łańcuch znaków {{LinkPatrz|numer_rozdzialu}}. {{Tab}}Jeśli spis nie będzie pierwszy {{Code|pierwszy_spis_tresci}} {{Patrz|pierwszy_spis_tresci}}, a nazwa spisu {{LinkPatrz|nazwa_spisu}} i numer spisu {{LinkPatrz|numer_spisu}}, a także {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, istnieją, i {{LinkPatrz|numer_rozdzialu}} nie jest rozdziałem o ciągu pustym, A jeśli rozdział jest spisem treści, czy spisem rzeczy, wtedy jest ustawiana prawdziwość zmiennej {{LinkPatrz|pierwszy_spis_tresci}}, wtedy dla {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę, dzięki: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}. Co dalej są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co to później jest zamienane łańcuch znaków w: {{LinkPatrz|numer_rozdzialu}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bzxilfqyxcy48yvba2l9a63hp8uzv04 547832 547831 2026-07-20T03:42:42Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547832 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. Jest tworzona pusta nowa zmienna tablicowa {{Code|tab_dane_ksiazki}} {{Patrz|tab_dane_ksiazki}}, a następnie jest tworzona jego pusta podtablica o kluczu {{Code|rozdzial}} {{LinkPatrz|rozdzial}}. Dalej jest tworzona zmienna {{Code|numer_rozdzialu}} {{Patrz|numer_rozdzialu}} ze zmiennej tablicowej {{Code|tab_numer}} {{LinkPatrz|tab_numer}} z łącznikiem kropka przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. {{Tab}}Gdy {{LinkPatrz|nazwa_spisu}} i numer spisu {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieją, a {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki)}} już nie, i jednocześnie {{LinkPatrz|numer_rozdzialu}} jest łańcuchem znaków niepustym, wtedy liczymy: Jeśli {{LinkPatrz|numer_spisu}} jest równy {{Code|1}}, czyli jest pierwszym spisem treści, i w podinstukcji {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, co dalej w tym są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co dalej to jest zamieniane na numerację rozdziału {{LinkPatrz|numer_rozdzialu}} z tym samym łącznikiem tą samą funkcją, co na samym początku tego rozważania przy tej zmiennej. Przeciwnie niż w poprzednim akapicie jest liczony numer spisu treści z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}, co jest łączone z {{LinkPatrz|numer_rozdzialu}} w większy numer rozdziału dzięki: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}, a jeśli spis znajduje się w spisie jako artykuł, nie jako w głównym rozdziale, wtedy są usuwane początkowe jedynki według: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co następie jest tworzone ostateczna wersja numeru rozdziału z tak otrzymanej tabeli w łańcuch znaków {{LinkPatrz|numer_rozdzialu}}. {{Tab}}Jeśli spis nie będzie pierwszy {{Code|pierwszy_spis_tresci}} {{Patrz|pierwszy_spis_tresci}}, a nazwa spisu {{LinkPatrz|nazwa_spisu}} i numer spisu {{LinkPatrz|numer_spisu}}, a także {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, istnieją, i {{LinkPatrz|numer_rozdzialu}} nie jest rozdziałem o ciągu pustym, A jeśli rozdział jest spisem treści, czy spisem rzeczy, wtedy jest ustawiana prawdziwość zmiennej {{LinkPatrz|pierwszy_spis_tresci}}, wtedy dla {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę, dzięki: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}. Co dalej są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co to później jest zamienane łańcuch znaków w: {{LinkPatrz|numer_rozdzialu}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> m8uc69haxpm66ihri479hqpstmr1cm9 547833 547832 2026-07-20T04:05:53Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547833 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. Jest tworzona pusta nowa zmienna tablicowa {{Code|tab_dane_ksiazki}} {{Patrz|tab_dane_ksiazki}}, a następnie jest tworzona jego pusta podtablica o kluczu {{Code|rozdzial}} {{LinkPatrz|rozdzial}}. Dalej jest tworzona zmienna {{Code|numer_rozdzialu}} {{Patrz|numer_rozdzialu}} ze zmiennej tablicowej {{Code|tab_numer}} {{LinkPatrz|tab_numer}} z łącznikiem kropka przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. {{Tab}}Gdy {{LinkPatrz|nazwa_spisu}} i numer spisu {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieją, a {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki)}} już nie, i jednocześnie {{LinkPatrz|numer_rozdzialu}} jest łańcuchem znaków niepustym, wtedy liczymy: Jeśli {{LinkPatrz|numer_spisu}} jest równy {{Code|1}}, czyli jest pierwszym spisem treści, i w podinstukcji {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, co dalej w tym są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co dalej to jest zamieniane na numerację rozdziału {{LinkPatrz|numer_rozdzialu}} z tym samym łącznikiem tą samą funkcją, co na samym początku tego rozważania przy tej zmiennej. Przeciwnie niż w poprzednim akapicie jest liczony numer spisu treści z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}, co jest łączone z {{LinkPatrz|numer_rozdzialu}} w większy numer rozdziału dzięki: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}, a jeśli spis znajduje się w spisie jako artykuł, nie jako w głównym rozdziale, wtedy są usuwane początkowe jedynki według: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co następie jest tworzone ostateczna wersja numeru rozdziału z tak otrzymanej tabeli w łańcuch znaków {{LinkPatrz|numer_rozdzialu}}. {{Tab}}Jeśli spis nie będzie pierwszy {{Code|pierwszy_spis_tresci}} {{Patrz|pierwszy_spis_tresci}}, a nazwa spisu {{LinkPatrz|nazwa_spisu}} i numer spisu {{LinkPatrz|numer_spisu}}, a także {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, istnieją, i {{LinkPatrz|numer_rozdzialu}} nie jest rozdziałem o ciągu pustym, A jeśli rozdział jest spisem treści, czy spisem rzeczy, wtedy jest ustawiana prawdziwość zmiennej {{LinkPatrz|pierwszy_spis_tresci}}, następnie dla {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę, dzięki: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}. Co dalej są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co to później jest zamienane na łańcuch znaków w: {{LinkPatrz|numer_rozdzialu}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qbptwibzr30x131bvkc0xtgcwrvdsko 547834 547833 2026-07-20T04:21:59Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547834 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. Jest tworzona pusta nowa zmienna tablicowa {{Code|tab_dane_ksiazki}} {{Patrz|tab_dane_ksiazki}}, a następnie jest tworzona jego pusta podtablica o kluczu {{Code|rozdzial}} {{LinkPatrz|rozdzial}}, co z tego jest tworzone {{Code|tab_rozdzial}} {{Patrz|tab_rozdzial}}. Dalej jest tworzona zmienna {{Code|numer_rozdzialu}} {{Patrz|numer_rozdzialu}} ze zmiennej tablicowej {{Code|tab_numer}} {{LinkPatrz|tab_numer}} z łącznikiem kropka przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. {{Tab}}Gdy {{LinkPatrz|nazwa_spisu}} i numer spisu {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieją, a {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki)}} już nie, i jednocześnie {{LinkPatrz|numer_rozdzialu}} jest łańcuchem znaków niepustym, wtedy liczymy: Jeśli {{LinkPatrz|numer_spisu}} jest równy {{Code|1}}, czyli jest pierwszym spisem treści, i w podinstukcji {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, co dalej w tym są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co dalej to jest zamieniane na numerację rozdziału {{LinkPatrz|numer_rozdzialu}} z tym samym łącznikiem tą samą funkcją, co na samym początku tego rozważania przy tej zmiennej. Przeciwnie niż w poprzednim akapicie jest liczony numer spisu treści z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}, co jest łączone z {{LinkPatrz|numer_rozdzialu}} w większy numer rozdziału dzięki: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}, a jeśli spis znajduje się w spisie jako artykuł, nie jako w głównym rozdziale, wtedy są usuwane początkowe jedynki według: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co następie jest tworzone ostateczna wersja numeru rozdziału z tak otrzymanej tabeli w łańcuch znaków {{LinkPatrz|numer_rozdzialu}}. {{Tab}}Jeśli spis nie będzie pierwszy {{Code|pierwszy_spis_tresci}} {{Patrz|pierwszy_spis_tresci}}, a nazwa spisu {{LinkPatrz|nazwa_spisu}} i numer spisu {{LinkPatrz|numer_spisu}}, a także {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, istnieją, i {{LinkPatrz|numer_rozdzialu}} nie jest rozdziałem o ciągu pustym, A jeśli rozdział jest spisem treści, czy spisem rzeczy, wtedy jest ustawiana prawdziwość zmiennej {{LinkPatrz|pierwszy_spis_tresci}}, następnie dla {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę, dzięki: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}. Co dalej są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co to później jest zamienane na łańcuch znaków w: {{LinkPatrz|numer_rozdzialu}}. ---- Tego {{LinkPatrz|tab_rozdzial}} tworzony podtablicę o kluczu {{LinkPatrz|numer_rozdzialu}}, jeśli nie istnieje, co z tego mamy {{LinkPatrz|tab_numer_rozdzialu}}, co dalej na podstawie tego dalej tworzymy podtablicę o kluczu {{Code|artykul}} {{LinkPatrz|artykul}}, jeżeli nie istnieje, co dzięki temu mamy: {{Code|tab_artykul}} {{Patrz|tab_artykul}}. Tworzymy numer artykułu {{Code|numer_artykulu}} {{LinkPatrz|numer_artykulu}} z {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}} z łącznikiem kropką, przy pomocy: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Następnie tworzymy podtablicę z {{LinkPatrz|tab_artykul}} z klucza {{LinkPatrz|numer_artykulu}}, jeśli nie istnieje, tworząc: {{Code|tab_numer_artykulu}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1z1urh3inaze46cqhcgyywdm6ax9rky 547835 547834 2026-07-20T04:24:50Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547835 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. Jest tworzona pusta nowa zmienna tablicowa {{Code|tab_dane_ksiazki}} {{Patrz|tab_dane_ksiazki}}, a następnie jest tworzona jego pusta podtablica o kluczu {{Code|rozdzial}} {{LinkPatrz|rozdzial}}, co z tego jest tworzone {{Code|tab_rozdzial}} {{Patrz|tab_rozdzial}}. Dalej jest tworzona zmienna {{Code|numer_rozdzialu}} {{Patrz|numer_rozdzialu}} ze zmiennej tablicowej {{Code|tab_numer}} {{LinkPatrz|tab_numer}} z łącznikiem kropka przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. {{Tab}}Gdy {{LinkPatrz|nazwa_spisu}} i numer spisu {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieją, a {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki)}} już nie, i jednocześnie {{LinkPatrz|numer_rozdzialu}} jest łańcuchem znaków niepustym, wtedy liczymy: Jeśli {{LinkPatrz|numer_spisu}} jest równy {{Code|1}}, czyli jest pierwszym spisem treści, i w podinstukcji {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, co dalej w tym są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co dalej to jest zamieniane na numerację rozdziału {{LinkPatrz|numer_rozdzialu}} z tym samym łącznikiem tą samą funkcją, co na samym początku tego rozważania przy tej zmiennej. Przeciwnie niż w poprzednim akapicie jest liczony numer spisu treści z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}, co jest łączone z {{LinkPatrz|numer_rozdzialu}} w większy numer rozdziału dzięki: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}, a jeśli spis znajduje się w spisie jako artykuł, nie jako w głównym rozdziale, wtedy są usuwane początkowe jedynki według: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co następie jest tworzone ostateczna wersja numeru rozdziału z tak otrzymanej tabeli w łańcuch znaków {{LinkPatrz|numer_rozdzialu}}. {{Tab}}Jeśli spis nie będzie pierwszy {{Code|pierwszy_spis_tresci}} {{Patrz|pierwszy_spis_tresci}}, a nazwa spisu {{LinkPatrz|nazwa_spisu}} i numer spisu {{LinkPatrz|numer_spisu}}, a także {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, istnieją, i {{LinkPatrz|numer_rozdzialu}} nie jest rozdziałem o ciągu pustym, A jeśli rozdział jest spisem treści, czy spisem rzeczy, wtedy jest ustawiana prawdziwość zmiennej {{LinkPatrz|pierwszy_spis_tresci}}, następnie dla {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę, dzięki: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}. Co dalej są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co to później jest zamienane na łańcuch znaków w: {{LinkPatrz|numer_rozdzialu}}. ---- Tego {{LinkPatrz|tab_rozdzial}} tworzony podtablicę o kluczu {{LinkPatrz|numer_rozdzialu}}, jeśli nie istnieje, co z tego mamy {{Code|tab_numer_rozdzialu}} {{Patrz|tab_numer_rozdzialu}}, co dalej na podstawie tego dalej tworzymy podtablicę o kluczu {{Code|artykul}} {{LinkPatrz|artykul}}, jeżeli nie istnieje, co dzięki temu mamy: {{Code|tab_artykul}} {{Patrz|tab_artykul}}. Tworzymy numer artykułu {{Code|numer_artykulu}} {{LinkPatrz|numer_artykulu}} z {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}} z łącznikiem kropką, przy pomocy: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Następnie tworzymy podtablicę z {{LinkPatrz|tab_artykul}} z klucza {{LinkPatrz|numer_artykulu}}, jeśli nie istnieje, tworząc: {{Code|tab_numer_artykulu}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> irsdlz49px1xeh05sxf10d6mlqc8x8x 547836 547835 2026-07-20T04:31:55Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547836 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. Jest tworzona pusta nowa zmienna tablicowa {{Code|tab_dane_ksiazki}} {{Patrz|tab_dane_ksiazki}}, a następnie jest tworzona jego pusta podtablica o kluczu {{Code|rozdzial}} {{LinkPatrz|rozdzial}}, co z tego jest tworzone {{Code|tab_rozdzial}} {{Patrz|tab_rozdzial}}. Dalej jest tworzona zmienna {{Code|numer_rozdzialu}} {{Patrz|numer_rozdzialu}} ze zmiennej tablicowej {{Code|tab_numer}} {{LinkPatrz|tab_numer}} z łącznikiem kropka przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. {{Tab}}Gdy {{LinkPatrz|nazwa_spisu}} i numer spisu {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieją, a {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki)}} już nie, i jednocześnie {{LinkPatrz|numer_rozdzialu}} jest łańcuchem znaków niepustym, wtedy liczymy: Jeśli {{LinkPatrz|numer_spisu}} jest równy {{Code|1}}, czyli jest pierwszym spisem treści, i w podinstukcji {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, co dalej w tym są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co dalej to jest zamieniane na numerację rozdziału {{LinkPatrz|numer_rozdzialu}} z tym samym łącznikiem tą samą funkcją, co na samym początku tego rozważania przy tej zmiennej. Przeciwnie niż w poprzednim akapicie jest liczony numer spisu treści z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}, co jest łączone z {{LinkPatrz|numer_rozdzialu}} w większy numer rozdziału dzięki: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}, a jeśli spis znajduje się w spisie jako artykuł, nie jako w głównym rozdziale, wtedy są usuwane początkowe jedynki według: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co następie jest tworzone ostateczna wersja numeru rozdziału z tak otrzymanej tabeli w łańcuch znaków {{LinkPatrz|numer_rozdzialu}}. {{Tab}}Jeśli spis nie będzie pierwszy {{Code|pierwszy_spis_tresci}} {{Patrz|pierwszy_spis_tresci}}, a nazwa spisu {{LinkPatrz|nazwa_spisu}} i numer spisu {{LinkPatrz|numer_spisu}}, a także {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, istnieją, i {{LinkPatrz|numer_rozdzialu}} nie jest rozdziałem o ciągu pustym, A jeśli rozdział jest spisem treści, czy spisem rzeczy, wtedy jest ustawiana prawdziwość zmiennej {{LinkPatrz|pierwszy_spis_tresci}}, następnie dla {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę, dzięki: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}. Co dalej są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co to później jest zamienane na łańcuch znaków w: {{LinkPatrz|numer_rozdzialu}}. ---- Tego {{LinkPatrz|tab_rozdzial}} tworzony podtablicę o kluczu {{LinkPatrz|numer_rozdzialu}}, jeśli nie istnieje, co z tego mamy {{Code|tab_numer_rozdzialu}} {{Patrz|tab_numer_rozdzialu}}, co dalej na podstawie tego dalej tworzymy podtablicę o kluczu {{Code|artykul}} {{LinkPatrz|artykul}}, jeżeli nie istnieje, co dzięki temu mamy: {{Code|tab_artykul}} {{Patrz|tab_artykul}}. Tworzymy numer artykułu {{Code|numer_artykulu}} {{LinkPatrz|numer_artykulu}} z {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}} z łącznikiem kropką, przy pomocy: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Następnie tworzymy podtablicę z {{LinkPatrz|tab_artykul}} z klucza {{LinkPatrz|numer_artykulu}}, jeśli nie istnieje, tworząc: {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}}. ---- Z tablicy {{LinkPatrz|tab_numer_artykulu}}, modyfikujemy tą podtablicę dodając do jego końca elementy na podstawie: <syntaxhighlight lang="lua"> table.insert(tab_numer_artykulu,{["przekierowanie"]=czy_tabelka and przekierowanie[1] or ((not czy_tabelka) and przekierowanie or nil),["kod języka"]=czy_tabelka and przekierowanie[3] or nil,["kod projektu"]=czy_tabelka and przekierowanie[4] or nil,["pełna nazwa książki"]=(czy_tabelka and przekierowanie[2]) and nazwy_modul["NazwaModułu"](przekierowanie[2][1],przekierowanie[2][2],przekierowanie[2][3],"") or nil,["link"]=czy_tabelka and przekierowanie[5] or nil,["nazwa"]=nazwa,["spis treści"]=czy_nienilowy_rozdzial,["czy w podręczniku"]=(((artykul~="")or(numer_artykulu~="")) and ((czy_artykuly_podrecznikowe) and true or nil) or nil),["dodane"]=czy_dodane,["numer"]=s,["inna książka"]=czy_inna_ksiazka,["url"]=czy_url,}); </syntaxhighlight> Na samym końcu, po dojściu do tego momentu funkcja zawsze zwraca wartość {{Code|false}}, czyli procedura: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, na tej funkcji, czyli:{{LinkPatrz|__FUNKCJA-PobierzDaneKsiążki}}, nie zatrzymuje się. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qoooa4h5pqdjhg3kbqsa19iopurc4v5 547837 547836 2026-07-20T04:32:38Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547837 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. Jest tworzona pusta nowa zmienna tablicowa {{Code|tab_dane_ksiazki}} {{Patrz|tab_dane_ksiazki}}, a następnie jest tworzona jego pusta podtablica o kluczu {{Code|rozdzial}} {{LinkPatrz|rozdzial}}, co z tego jest tworzone {{Code|tab_rozdzial}} {{Patrz|tab_rozdzial}}. Dalej jest tworzona zmienna {{Code|numer_rozdzialu}} {{Patrz|numer_rozdzialu}} ze zmiennej tablicowej {{Code|tab_numer}} {{LinkPatrz|tab_numer}} z łącznikiem kropka przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. {{Tab}}Gdy {{LinkPatrz|nazwa_spisu}} i numer spisu {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieją, a {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki)}} już nie, i jednocześnie {{LinkPatrz|numer_rozdzialu}} jest łańcuchem znaków niepustym, wtedy liczymy: Jeśli {{LinkPatrz|numer_spisu}} jest równy {{Code|1}}, czyli jest pierwszym spisem treści, i w podinstukcji {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, co dalej w tym są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co dalej to jest zamieniane na numerację rozdziału {{LinkPatrz|numer_rozdzialu}} z tym samym łącznikiem tą samą funkcją, co na samym początku tego rozważania przy tej zmiennej. Przeciwnie niż w poprzednim akapicie jest liczony numer spisu treści z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}, co jest łączone z {{LinkPatrz|numer_rozdzialu}} w większy numer rozdziału dzięki: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}, a jeśli spis znajduje się w spisie jako artykuł, nie jako w głównym rozdziale, wtedy są usuwane początkowe jedynki według: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co następie jest tworzone ostateczna wersja numeru rozdziału z tak otrzymanej tabeli w łańcuch znaków {{LinkPatrz|numer_rozdzialu}}. {{Tab}}Jeśli spis nie będzie pierwszy {{Code|pierwszy_spis_tresci}} {{Patrz|pierwszy_spis_tresci}}, a nazwa spisu {{LinkPatrz|nazwa_spisu}} i numer spisu {{LinkPatrz|numer_spisu}}, a także {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, istnieją, i {{LinkPatrz|numer_rozdzialu}} nie jest rozdziałem o ciągu pustym, A jeśli rozdział jest spisem treści, czy spisem rzeczy, wtedy jest ustawiana prawdziwość zmiennej {{LinkPatrz|pierwszy_spis_tresci}}, następnie dla {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę, dzięki: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}. Co dalej są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co to później jest zamienane na łańcuch znaków w: {{LinkPatrz|numer_rozdzialu}}. ---- Tego {{LinkPatrz|tab_rozdzial}} tworzony podtablicę o kluczu {{LinkPatrz|numer_rozdzialu}}, jeśli nie istnieje, co z tego mamy {{Code|tab_numer_rozdzialu}} {{Patrz|tab_numer_rozdzialu}}, co dalej na podstawie tego dalej tworzymy podtablicę o kluczu {{Code|artykul}} {{LinkPatrz|artykul}}, jeżeli nie istnieje, co dzięki temu mamy: {{Code|tab_artykul}} {{Patrz|tab_artykul}}. Tworzymy numer artykułu {{Code|numer_artykulu}} {{LinkPatrz|numer_artykulu}} z {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}} z łącznikiem kropką, przy pomocy: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Następnie tworzymy podtablicę z {{LinkPatrz|tab_artykul}} z klucza {{LinkPatrz|numer_artykulu}}, jeśli nie istnieje, tworząc: {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}}. ---- Z tablicy {{LinkPatrz|tab_numer_artykulu}}, modyfikujemy tą podtablicę dodając do jego końca elementy na podstawie: <syntaxhighlight lang="lua"> table.insert(tab_numer_artykulu,{["przekierowanie"]=czy_tabelka and przekierowanie[1] or ((not czy_tabelka) and przekierowanie or nil),["kod języka"]=czy_tabelka and przekierowanie[3] or nil,["kod projektu"]=czy_tabelka and przekierowanie[4] or nil,["pełna nazwa książki"]=(czy_tabelka and przekierowanie[2]) and nazwy_modul["NazwaModułu"](przekierowanie[2][1],przekierowanie[2][2],przekierowanie[2][3],"") or nil,["link"]=czy_tabelka and przekierowanie[5] or nil,["nazwa"]=nazwa,["spis treści"]=czy_nienilowy_rozdzial,["czy w podręczniku"]=(((artykul~="")or(numer_artykulu~="")) and ((czy_artykuly_podrecznikowe) and true or nil) or nil),["dodane"]=czy_dodane,["numer"]=s,["inna książka"]=czy_inna_ksiazka,["url"]=czy_url,}); </syntaxhighlight> Na samym końcu, po dojściu do tego momentu funkcja zawsze zwraca wartość {{Code|false}}, czyli procedura: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, na tej funkcji, czyli:{{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, nie zatrzymuje się. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gsyb82ezf22n72qze638ksokjl9dxz1 547838 547837 2026-07-20T04:34:18Z Persino 2851 /* {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} */ 547838 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumerLubNazwaArtykułówKsiążek}}|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 pobierania numerku artykułu lub nagłówka o którymś numerze jego nazwy przy pomocy szablonu: {{s|PobierzNumerArtykułu}}, lub odwrotnie jej nazwy, dzięki: {{s|PobierzNazwęArtykułu}}. Można też zbierać informacje przy pomocy wywołania ramki: {{m|StronicowyParser|PobierzDaneKsiążki}}. == {{Śródtytuł|funkcje lokalne}}Funkcje lokalne == Funkcje lokalne potrzebne do użycia w funkcjach użytych w rozdziale: {{Code|{{LinkŚródtytuł|funkcje transportu}}}}. === {{Śródtytuł|PobierzNumerLubNazweArtykulu}}{{Code|PobierzNumerLubNazweArtykulu}} === Funkcja do pobierania nazwy lub numerka rozdziału lub artykułu jego przeciwnego, przy pomocy funkcji, realizowana przy pomocy funkcji: {{LinkPatrz|__FUNKCJA}}, ale też za pomocą tej funkcji można zbierać informacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramki tablicy transportu funkcji, * {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica używana zamiast uzyskania tablicy ramki: {{Code|{{ld2|StronicowyParser/informacje}}}}, a właściwie jego głównej podtablicy, * {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja do uzyskania tego, co jest potrzebne w nagłówku, ale też ona służy do zbierania informacji, * {{Code|typ}} {{Patrz|typ}} - prawdziwe, gdy jest uzyskiwana nazwa artykułu na podstawie jego numeru, przeciwnie, wtedy odwrotnie, * {{Code|zbieraj_dane_wszystkie}} {{Patrz|zbieraj_dane_wszystkie}} - prawdziwe, gdy funkcja służy do zbierania informacji. Parametry tablica ramki {{LinkPatrz|frame}} tablicy transportu funkcji: * {{Code|nagłówek}} {{Patrz|nagłówek}} - prawdziwe, gdy artykuły mogą się powtarzać, * {{Code|nie wszystkie}} {{Patrz|nie wszystkie}} - prawdziwe, wtedy nie są brane wszystkie rozdziały, * {{Code|dane}} {{Patrz|dane}} - typ zbieranych lub uzyskiwanych danych, * {{Code|spis}} {{Patrz|spis}} - nazwa artykułu spisu, a więc który spis ma rozważać, * {{Code|poziomowo}} {{Patrz|poziomowo}} - czy ma brać numerki wielopoziomowe, czyli oddzielonych kropkami, * {{Code|nazwa}} {{Patrz|nazwa-PobierzNumerLubNazweArtykulu}} - brana jest nazwa linku artykułu zamiast nazwy, * {{Code|który}} {{Patrz|który}} - którą nazwę nagłówka lub artykułu, albo jego numer, w zależności od ustawień, ma wyszukać, aby np. zwrócić to przeciwne. Powyższe parametry to są parametry ramki rodzica, czyli szablonu. Funkcja numeruje poszczególne nagłówki lub artykuły i na podstawie funkcji: {{LinkPatrz|__FUNKCJA}}, coś uzyskuje. Są różne typy zbierania danych, one charakteryzują się parametrem {{LinkPatrz|dane}}, ten parametr uzyskuje różne liczby, a one są {{Code|1}}, {{Code|2}} lub {{Code|3}}, a one oznaczają: * {{Code|1}} - rozważa tylko artykuły, * {{Code|2}} - rozważa tylko rozdziały, * {{Code|3}} - rozważa nie tylko artykuły, również rozdziały. Brak tej danej lub inna wartość oznacza, że brana jest jego domyślna wartość: {{Code|dana}} {{Code|{{=}}}} {{Code|1}}. Funkcja przy pomocy zmiennej {{LinkPatrz|nagłówek}}, zbiera, nawet powtarzające się, artykuły, nawet gdyby były one z nagłówkami. Można również rozważyć, jakie rozdziały ma zbierać, w spiach w rozdziale '''Spis treści''' i '''SPIS RZECZY''', są zbierane wszystkie rozdziały, w innych miejscach rozdziały moga nie być wszystkie zbierane, a jeżeli tak jest, to parametr {{LinkPatrz|nie wszystkie}} ma wartość niepustą. Rozdziały, według funkcji, w rozdziałe głównym spisu, są liczone względem tego rozdziału. Można zbierać dane, jeśli {{LinkPatrz|poziomowo}} jest prawdziwa, wtedy numerki są wielopoziomowe, tzn. ewentualnie rozdzielone numerkami, przeciwna wartość determiniuje, że nagłówki lub artykuły, w zależności od ustawień zbierania danych w spisach książki, są numerowane tylko liczbami naturalnymi od {{Code|1}}. Wartość {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}}, to zamiast nazwy artykułu brana jest jej nazwa linku, podczas pobierana nazwy. Parametr {{LinkPatrz|który}} jest liczbą lub domyślną wartością {{Code|1}}, to oznacza, że brana jest wartość nazwy artykułu na podstawie numerka jej ten numer okreslony tą zmienną, lub jeśli pobierany jest numer to ten numer nazwy. A co oznacza '''ten numer''', właśnie to, że brana jest ta zmienna, która jest taka sama o tym numerze. Czasami, jeśli w rozdziale jest wiele artykułów, to ten artykuł jest traktowany jako rozdzial, i w nim artykuły są liczone osobno w odpowiedni sposób. Czasami znaki przed artykułem podowują, że taki rozdział jest liczony jako rozdział, a z artykułami jest jak poprzednio, a gdy w artykuł jest na poczatku pozycji spisu, to to wtedy jest to zwykły artykuł. === {{Śródtytuł|ZamienNumerArtykuluNaTabele}}{{Code|ZamienNumerArtykuluNaTabele}} === Funkcja zamienia numerki z kropkami na tabelę, z nich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNumerArtykuluNaTabele(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} {{Patrz|numer_artykulu}} - numer artykułu lub nagłówka, którego numerki są oddzielone kropkami. Funkcja zwraca tą tablicę. === {{Śródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}{{Code|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}} === Funkcja w odpowiedni w sposób usuwa pierwsze jedynki w numerach, które mogą na początku się powtarzać. Tylko te jedynki są usuwane,aby nie wyzerować tablicy numerków. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, * {{Code|tab_lista_artykulow_w_ksiazce}} {{Patrz|tab_lista_artykulow_w_ksiazce}} - tablica spisów książki, jego rozdziałów i artykułów, * {{Code|tab_numer_artykulu}} {{Patrz|tab_numer_artykulu}} - tabela numerków nagłówków lub artykułów. Funkcja generuje na podstawie {{LinkPatrz|tab_lista_artykulow_w_ksiazce}} tabelę listy spisów, które należą też do tych spisów. Na podstawie tej tabeli, jeżeli jakis inny spis, niż główny, nie należy do tej tabeli, to funkcja zwraca tabelę numerków {{LinkPatrz|tab_numer_artykulu}}. Funkcja dla długości tablicy większej niż jeden, jeżeli ten numerek jest {{Code|1}}, to jest on usuwamy. A jeżeli dalszy numerek jest też {{Code|1}}, wtedy jeżeli jest jakiś główny rozdział, to wtedy jest usuwana początkowa jedynka. Funkcja zwraca przetworzoną niepustą tablicę {{LinkPatrz|tab_numer_artykulu}}. === {{Śródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}{{Code|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}} === Funkcja łączy numerację spisu z numeracją artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}, czyli numerki oddzielone kropkami artykułu, * {{Code|numer_spisu}} {{Patrz|numer_spisu}} - numerki oddzielone kropkami spisu. Funkcja zamienia na tablicę numerków przy pomocy funkcji {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}} numerki artykułu {{LinkPatrz|numer_artykulu}}, a jeśli tablica numerków artykułu jest mniejszy niż jeden, wtedy zwraca tą pustą tablicę numerków. A pózniej ta zamiana na tablicę w ten sam sposób odbywa się dla {{LinkPatrz|numer_spisu}}. Funkcja dla początkowego numerku w tablicy {{LinkPatrz|numer_artykulu}}, zamienia na końcowy numerek spisu {{LinkPatrz|numer_spisu}}. Dalsze numerki ze spisu są dodawane kolejno do numerek artykułów na samym początku tablicy. Funkcja zwraca numerek całkowity artykułu w postaci połączonej z dwóch numerków spisu i artykułu. == {{Śródtytuł|funkcje transportu}}Funkcje tablicy transportu funkcji == To są funkcje zwracane do tablicy transportu, i mogą być one widoczne ze strony innych modułów. Te funkcje wykorzystują funkcje z rozdziału: {{Code|{{LinkŚródtytuł|funkcje lokalne}}}}. === {{Śródtytuł|p["PobierzNumerArtykułu"]}}{{Code|p["PobierzNumerArtykułu"]}} === Funkcja pobierania numeru artykułu, wedle ustawień, na podstawie jej nazwy. Funkcja jest implemetowana w szablonie: {{s|PobierzNumerArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNumerArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić nazwę nagłówka, czy artykułu, na numer, będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji {{ZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-PobierzNumerArtykułu}}: * {{Code|poziomowo}} - jak w: {{LinkPatrz|poziomowo}}, czyli czy dopasowanie ma być wielopoziomowe, oddzielone kropkami, czy liczba naturalną, * {{Code|i}} {{Patrz|i}} - gdy {{LinkPatrz|poziomowo}}, jest fałszywe, to który numer jest danego rozdziału lub artykułu, jest to liczba naturalna, * {{Code|ktory}} - jak w: {{LinkPatrz|który}}, czyli które takie samo dopasowanie ma uwzględnić, * {{Code|pierwszy_parametr_szablonu}} {{Patrz|pierwszy_parametr_szablonu}} - jest to bezparametrowa funkcja zwracająca tabelę z trzech parametrów, w którym elementami są kolejno: pierwszy jest to pierwszy parametr szablonu, który uruchamia funkcję, która z kolei iteracyjnie wywołuje tą funkcję, ono przyjmuje taką formę w zależności od parametru {{LinkPatrz|typ}}, drugi, czy zamiast artykułu ma zwracać nazwę linku, a trzeci to jest parametr {{LinkPatrz|dane}}, * {{Code|rozdzial}} {{Patrz|rozdzial}} - rozdział w spisie, * {{Code|artykul}} {{Patrz|artykul}} - nazwa artykułu, w spisie, w książce lub innej strony, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer rozdziału, * {{Code|tab_poziomowo}} {{Patrz|tab_poziomowo}} - tablica numerków charakteryzujący po połączeniu łacznikiem kropką jest to numer artykułu w rozdziale, * {{Code|czy_nienilowy_rozdzial}} {{Patrz|czy_nienilowy_rozdzial}} - czy rozważany rozdział jest nienilowy, * {{Code|czy_artykuly_podrecznikowe}} {{Patrz|czy_artykuly_podrecznikowe}} - czy artykuł jest stroną podręcznika, * {{Code|przekierowanie}} {{Patrz|przekierowanie}} - nazwa artykułu przekierowania, * {{Code|nazwa}} {{Patrz|nazwa}} - nazwa linku artykułu, * {{Code|artykul_spisu}} {{Patrz|artykul_spisu}} - nazwa artykułu spisu, podany w parametrach szablonu, która uruchamia funkcję, która z kolei wywołuje tą funkcję, * {{Code|nazwa_spisu}} {{Patrz|nazwa_spisu}} - nazwa artykułu spisu wśród wszystkich spisach, * {{Code|numer_spisu}} - jak w: {{LinkPatrz|numer_spisu}} - jest to numer spisu, jest to liczba naturalna, * {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce}}, * {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{Patrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} - czy artykuł znajduje się w głównym spisie treści. Gdy {{Code|artykul}} {{LinkPatrz|artykul}} przyjmuje wartość pustą, wtedy jest sprawdzany rozdział, jeśli {{Code|dane}} {{LinkPatrz|dane}} jest równy liczbowo {{Code|2}} lub {{Code|3}}, w takim razie jest sprawdzany rozdział {{LinkPatrz|rozdzial}} ze zmienną podaną jako pierwszy parametr podanego szablonu, a jeśli to {{LinkPatrz|artykul}} przyjmuje inną wartość, wtedy dla {{LinkPatrz|dane}} równe {{Code|1}} lub {{Code|3}}, wtedy jest z tym pierwszym parametrem sprawdzany {{LinkPatrz|artykul}}, a jeżeli w tym przypadku dopasowanie się nie powiedzie, wtedy tak samo jest sprawdzane jego przekierowanie {{LinkPatrz|przekierowanie}}. Jeśli poprzednie dopasowanie się powiedzie, wtedy jest sprawdzane, czy to takie samo dopsasowanie jest {{LinkPatrz|który}}, a ten licznik tych samych dopasowań jest bez przerwy liczony, gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} przyjmuje wartość fałszywą, wtedy zwracane są dwa parametry, tzn. kolejno: {{Code|i}} {{LinkPatrz|i}} i {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, przeciwnie, wtedy, dalej będziemy rozważać, numerki rozdziału i artykułu można przedstawić w postaci tabel numerków, które mozna płączyć w każdnym z nich kropkami, a je kolejno kropkami. Po takim połączeniu otrzymamy numerem artykułu {{Patrz|numer_artykułu}} w danej książce, numery artykułu mogą się powtarzać rozdziałów lub artykułów. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy jest zwracane {{ZobaczTeż|numer_artykułu}} numer artykułu {{LinkPatrz|numer_artykułu}}, jako pierwsza zwracana wartość, a druga {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. W innym przypadku, gdy spis jest pierwszy, i jest główny spis treści według {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, to podobnie robimy jak w punkcie {{LinkZobaczTeż|numer_artykułu}}, przeciwnie: numer artykułu {{LinkPatrz|numer_artykułu}} jest zamieniany na tabelę dzięki {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, i z niego są usuwane początkowe jedynki przy pomocy {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, dalej robimy tak jak: {{ZobaczTeż|parametry zwracane łącznikowe}} uzyskana tabela jest łączona w łańcuch znakowych z łącznikiem kropką, używając funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a drugim parametrem zwracanym jest {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. A gdy jeszcze nie zwrócono wyniku, wtedy liczony jest numer spisu treści na podstawie: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, jeśli on nie istnieje, wtedy jest zwracany numer artykułu {{LinkPatrz|numer_artykułu}} jak w: {{LinkZobaczTeż|numer_artykułu}}, przeciwnie mamy, w którym jest dany artykuł, który po połączeniu z numerem artykułu daje całkowity numer artykułu, a ta integracja następuje dzięki {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co póżniej jest zwracane jak w: {{LinkZobaczTeż|parametry zwracane łącznikowe}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNumerArtykułu}}, która zwraca dwie dane, tzn. numer rozdziału lub artykułu. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzNazwęArtykułu"]}}{{Code|p["PobierzNazwęArtykułu"]}} === Funkcja pobierania nazwy artykułu na podstawie jej numeru, wedle ustawień. Funkcja jest implemetowana w szablonie: {{s|PobierzNazwęArtykułu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}{{Code|__FUNKCJA}} ==== Jest to funkcja, dzięki, której można zamienić numer nagłówka, czy artykułu, na nazwę, ten numer będący liczbą naturalną od {{Code|1}}, lub numerkami oddzielonych kropkami, w zależności od ustawień. Definicja skrótowa funkcji ma ten sam kształt, co w: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a opis parametrów jest według: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}. Gdy {{Code|poziomowo}} {{LinkPatrz|poziomowo}} jest welkością fałszywą, i gdy {{Code|i}} {{LinkPatrz|i}} jest równe {{Code|numer}} {{Patrz|numer}}, który jest pierwszym parametrem, wtedy dla {{Code|ktory}} {{LinkPatrz|który}}, dla jakiegoś tego samego powtórzenia, gdy {{Code|artykul}} {{LinkPatrz|artykul}} jest nie równy ciągowi pustemu, wtedy jest wyświetlany artykuł {{LinkPatrz|artykul}}, jeśli {{Code|nazwa}} (parametr ramki {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}) {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} jest niepuste, przeciwnie jest wyświetlana nazwa linku artykułu, a dla {{LinkPatrz|artykul}} pustego, wtedy jest wyświetlany rozdział {{LinkPatrz|rozdzial}}. ===== {{Śródtytuł|NumerArtykulu}}{{Code|NumerArtykulu}} ===== Zmienna {{Code|tab_numer}} {{LinkPatrz|tab_numer}} jest łączona kropkami przy pomocy {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}, a dalej {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}}, łączymy takim samym łącznikiem, co poprzednio, a oba łańcuchy też łączymy w jeden większy łańcuch znakowy, którym jest numer artykułu. ===== {{Śródtytuł|WynikArtykulowyZNumeru}}{{Code|WynikArtykulowyZNumeru}} ===== Funkcja do liczenia artykułu lub nazwy artykułu albo rozdziału z jego numeru wuelopoziomowo, tzn. przy prawdziwości parametru {{LinkPatrz|poziomowo}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function WynikArtykulowyZNumeru(numer_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|numer_artykulu}} - jak w: {{LinkPatrz|numer_artykulu}}. Gdy {{LinkPatrz|artykul}} jest równy ciągowi pustemu, wtedy dla parametru {{LinkPatrz|dane}}, takiego, że {{Code|2}} lub {{Code|3}}, sprawdzamy, czy numer artykułu {{LinkPatrz|numer_artykulu}} jest równy {{Code|numer}} {{LinkPatrz|numer}}, a jeśli nie, to dla parametrów {{LinkPatrz|dane}}, takiego, że {{Code|1}} lub {{Code|3}}, ale dla artykułu {{LinkPatrz|artykul}} równym ciągowi niepustemu, wtedy dla takiego samego sprawdzenia, dla takiego samego numeru o numerze {{LinkPatrz|który}}, gdy artykuł jest nierówny ciągowi niepustemu, wtedy gdy {{LinkPatrz|nazwa-PobierzNumerLubNazweArtykulu}} nie jest niepusta, wtedy zwracana jest nazwa artykułu {{LinkPatrz|artykul}}, przeciwnie nazwa linku artykułu, tzn. {{Code|nazwa}} {{LinkPatrz|nazwa}}. A jeśli {{LinkPatrz|artykul}} jest jednak równy ciągowi pustemu, to wtedy jest zwracany rozdział {{LinkPatrz|rozdzial}}. ===== Dalsza część opisu funkcji {{Code|__FUNKCJA}} ===== Liczony jest numer artykułu {{LinkPatrz|numer_artykulu}} przy pomocy funkcji: {{LinkŚródtytuł|NumerArtykulu}}. Gdy jest jeden spis, którym jest strona główna książki, albo nie istnieje {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje i zamieniony numer artykułu jest większy od jedynki, lub to istnieje i {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} jest większy od jedynki, wtedy {{ZobaczTeż|WynikArtykulowyZNumeru}} jest liczony wynik {{Code|wynik}} {{Patrz|wynik}} z funkcji: {{LinkŚródtytuł|WynikArtykulowyZNumeru}}.Gdy {{LinkPatrz|wynik}} istnieje, wtedy jest zwracany on w pierwszym parametrze, a w drugim zmienna {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}. Gdy {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieje, i jest równy {{Code|1}}, wtedy dla istniejącego {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} jest podobnie liczone i zwracane, jak w punkcie {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. A gdy jednak {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy numer artykulu {{LinkPatrz|numer_artykulu}} zamieniamy na tabelę na podstawie funkcji: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, usuwamy zbędne początkowe jedynki dzięki funkcji: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, z tabeli. Tą tabelę {{ZobaczTeż|łączenie tabeli numeru}} zamieniamy na łańcuch znakowy z łącznikiem przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Dalej robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. W innym wypadku, jeśli nie zwrócono wynik, wtedy liczymy numer spisu, w którym jest dany artykuł, czy rozdział, z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}. Jeżeli ten spis nie istnieje, to podobnie robimy jak w punkcie: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}, przeciwnie: integrujemy numer spisu z numerem artykułu, używając funkcji: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}. A jeżeli spis ten nie znajduje się w rozdziale głównym, wtedy robimy operację: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}. Wykonujemy operację jak w: {{LinkZobaczTeż|łączenie tabeli numeru}}. A następnie podobnie robimy jak w: {{LinkZobaczTeż|WynikArtykulowyZNumeru}}. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzNazwęArtykułu}}, która zwraca dwie dane, tzn. nazwę rozdziału lub artykułu na podstawie jego numeru. Drugą wartością zwracaną jest, czy to znajduje się, co to pierwsze opisuje w rozdziale głównym. Główna definicja funkcji: <syntaxhighlight lang="lua"> local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true); return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki; </syntaxhighlight> === {{Śródtytuł|p["PobierzDaneKsiążki"]}}{{Code|p["PobierzDaneKsiążki"]}} === Funkcja zbierania informacji o wszystkich spisach, tzn. wiadomości o każdym rozdziale i wszystko o linkach, tzn. o ich artykułach, nawet prowadzące na inne strony na {{NAZWASERWISU|link=tak}}, lub poza nim, a nawet o ich przetworzonych nazwach. Funkcja jest implementowana w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tzn. {{m|StronicowyParser|PobierzDaneKsiążki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - jak w: {{LinkPatrz|frame}}, * {{Code|tabela_listy_danych_analizy_ksiazki}} - jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}. ==== {{Śródtytuł|__FUNKCJA-PobierzDaneKsiążki}}{{Code|__FUNKCJA}} ==== Jest to funkcja do pobierania danych informacji o spisach. Definicja skrótowa funkcji jest bardzo podobna do: {{LinkZobaczTeż|__FUNKCJA-PobierzNumerArtykułu}}, a on ściślej wygląda trochę inaczej, a więc: <syntaxhighlight lang="lua"> local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)...end; </syntaxhighlight> Parametry funkcji: * Te same parametry, co w: {{LinkZobaczTeż|Parametry-PobierzNumerArtykułu}}, * {{Code|czy_dodane}} {{Patrz|czy_dodane}} - czy element artykułu bez nagłówka jest dodany do tabeli uzyskanego zebranego spisu, by zachować ciągłość numeracji, * {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}} - czy przekierowanie wskazuje na artykuł w innej książce, jeżeli strona główna książki nie przekierowuje do danej bieżącej książki, * {{Code|czy_url}} {{Patrz|czy_url}} - czy artykuł jest '''URL''', czyli czy jest adresem strony internetowej. Jeżeli parametr artykułu podanego spisu {{Code|artykul_spisu}} {{LinkPatrz|artykul_spisu}} i nazwy spisu {{Code|nazwa_spisu}} {{LinkPatrz|nazwa_spisu}} istnieją, wtedy funkcja sygnalizuje zatrzymanie się algorytmu: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, po przeanalizowaniu się jego od początku pierwszego spisu. Jest tworzona pusta nowa zmienna tablicowa {{Code|tab_dane_ksiazki}} {{Patrz|tab_dane_ksiazki}}, a następnie jest tworzona jego pusta podtablica o kluczu {{Code|rozdzial}} {{LinkPatrz|rozdzial}}, co z tego jest tworzone {{Code|tab_rozdzial}} {{Patrz|tab_rozdzial}}. Dalej jest tworzona zmienna {{Code|numer_rozdzialu}} {{Patrz|numer_rozdzialu}} ze zmiennej tablicowej {{Code|tab_numer}} {{LinkPatrz|tab_numer}} z łącznikiem kropka przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. {{Tab}}Gdy {{LinkPatrz|nazwa_spisu}} i numer spisu {{Code|numer_spisu}} {{LinkPatrz|numer_spisu}} istnieją, a {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki)}} już nie, i jednocześnie {{LinkPatrz|numer_rozdzialu}} jest łańcuchem znaków niepustym, wtedy liczymy: Jeśli {{LinkPatrz|numer_spisu}} jest równy {{Code|1}}, czyli jest pierwszym spisem treści, i w podinstukcji {{Code|glowny_spis_tresci_lub_rozdzial_ksiazki}} {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}} nie istnieje, wtedy {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}, co dalej w tym są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co dalej to jest zamieniane na numerację rozdziału {{LinkPatrz|numer_rozdzialu}} z tym samym łącznikiem tą samą funkcją, co na samym początku tego rozważania przy tej zmiennej. Przeciwnie niż w poprzednim akapicie jest liczony numer spisu treści z funkcji: {{LinkŚródtytuł|p["PobierzNumerArtykułu"]}}, co jest łączone z {{LinkPatrz|numer_rozdzialu}} w większy numer rozdziału dzięki: {{LinkŚródtytuł|IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci}}, a jeśli spis znajduje się w spisie jako artykuł, nie jako w głównym rozdziale, wtedy są usuwane początkowe jedynki według: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co następie jest tworzone ostateczna wersja numeru rozdziału z tak otrzymanej tabeli w łańcuch znaków {{LinkPatrz|numer_rozdzialu}}. {{Tab}}Jeśli spis nie będzie pierwszy {{Code|pierwszy_spis_tresci}} {{Patrz|pierwszy_spis_tresci}}, a nazwa spisu {{LinkPatrz|nazwa_spisu}} i numer spisu {{LinkPatrz|numer_spisu}}, a także {{LinkPatrz|glowny_spis_tresci_lub_rozdzial_ksiazki}}, istnieją, i {{LinkPatrz|numer_rozdzialu}} nie jest rozdziałem o ciągu pustym, A jeśli rozdział jest spisem treści, czy spisem rzeczy, wtedy jest ustawiana prawdziwość zmiennej {{LinkPatrz|pierwszy_spis_tresci}}, następnie dla {{LinkPatrz|numer_rozdzialu}} jest zamieniane na tabelę, dzięki: {{LinkŚródtytuł|ZamienNumerArtykuluNaTabele}}. Co dalej są usuwane początkowe jedynki na podstawie: {{LinkŚródtytuł|UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci}}, co to później jest zamienane na łańcuch znaków w: {{LinkPatrz|numer_rozdzialu}}. ---- Tego {{LinkPatrz|tab_rozdzial}} tworzony podtablicę o kluczu {{LinkPatrz|numer_rozdzialu}}, jeśli nie istnieje, co z tego mamy {{Code|tab_numer_rozdzialu}} {{Patrz|tab_numer_rozdzialu}}, co dalej na podstawie tego dalej tworzymy podtablicę o kluczu {{Code|artykul}} {{LinkPatrz|artykul}}, jeżeli nie istnieje, co dzięki temu mamy: {{Code|tab_artykul}} {{Patrz|tab_artykul}}. Tworzymy numer artykułu {{Code|numer_artykulu}} {{LinkPatrz|numer_artykulu}} z {{Code|tab_poziomowo}} {{LinkPatrz|tab_poziomowo}} z łącznikiem kropką, przy pomocy: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=table.concat|b=tak}}}}. Następnie tworzymy podtablicę z {{LinkPatrz|tab_artykul}} z klucza {{LinkPatrz|numer_artykulu}}, jeśli nie istnieje, tworząc: {{Code|tab_numer_artykulu}} {{LinkPatrz|tab_numer_artykulu}}. ---- Z tablicy {{LinkPatrz|tab_numer_artykulu}}, modyfikujemy tą podtablicę dodając do jego końca elementy na podstawie: <syntaxhighlight lang="lua"> table.insert(tab_numer_artykulu,{["przekierowanie"]=czy_tabelka and przekierowanie[1] or ((not czy_tabelka) and przekierowanie or nil),["kod języka"]=czy_tabelka and przekierowanie[3] or nil,["kod projektu"]=czy_tabelka and przekierowanie[4] or nil,["pełna nazwa książki"]=(czy_tabelka and przekierowanie[2]) and nazwy_modul["NazwaModułu"](przekierowanie[2][1],przekierowanie[2][2],przekierowanie[2][3],"") or nil,["link"]=czy_tabelka and przekierowanie[5] or nil,["nazwa"]=nazwa,["spis treści"]=czy_nienilowy_rozdzial,["czy w podręczniku"]=(((artykul~="")or(numer_artykulu~="")) and ((czy_artykuly_podrecznikowe) and true or nil) or nil),["dodane"]=czy_dodane,["numer"]=s,["inna książka"]=czy_inna_ksiazka,["url"]=czy_url,}); </syntaxhighlight> Na samym końcu, po dojściu do tego momentu funkcja zawsze zwraca wartość {{Code|false}}, czyli procedura: {{LinkŚródtytuł|PobierzNumerLubNazweArtykulu}}, na tej funkcji, czyli:{{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, nie zatrzymuje się. ==== Dalsza część funkcji ==== Wywoływana jest tutaj funkcja: {{LinkŚródtytuł|__FUNKCJA-PobierzDaneKsiążki}}, która nie zwraca żadnych danych, tylko modyfikuje zmienną w wyższej funkcji. Funkcja zwraca tabelę '''JSON''' przy pomocy funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.text.jsonEncode|b=tak}}}}, z ustawieniem: {{Code|mw.text.JSON_PRESERVE_KEYS}}, która numeruje indeksu w takiej formie jak jest użyte w języku {{lpg|Lua}} w {{Lpr|Lua|Scribunto}}, jeśli nie jest ustawiona zmienna: {{Code|kodowanie_nie_json}}, przeciwnie: jest zwracana ta tabela nie zamieniona na zmienną '''JSON'''. Główna definicja funkcji: <syntaxhighlight lang="lua"> local tab_dane_ksiazki=nil; ... PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true); return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8i63nwno4o74puon3mqt6nt342tqigh Wikibooks:Moduły/StronicowyParser/NumeracjaObiektówStron 4 63518 547840 542188 2026-07-20T04:50:06Z Persino 2851 547840 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumeracjaObiektówStron}}|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.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}}{{Code|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}} == == {{Śródtytuł|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}}{{Code|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}} == == {{Śródtytuł|p.SprawdzanieReferencji}}{{Code|p.SprawdzanieReferencji}} == == {{Śródtytuł|p.SprawdzanieOrazNumerowanieElementowychFormStrony}}{{Code|p.SprawdzanieOrazNumerowanieElementowychFormStrony}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> adbowpqbg4dxoqq02xq5q7vmtvdson1 547841 547840 2026-07-20T04:57:28Z Persino 2851 547841 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumeracjaObiektówStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} 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. Funkcje w module: {{Code|{{ld2|StronicowyParser/NumeracjaObiektówStron}}, jest uzupełnieniem modułu: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, co jest powiedziane w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}. == {{Śródtytuł|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}}{{Code|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}} == == {{Śródtytuł|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}}{{Code|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}} == == {{Śródtytuł|p.SprawdzanieReferencji}}{{Code|p.SprawdzanieReferencji}} == == {{Śródtytuł|p.SprawdzanieOrazNumerowanieElementowychFormStrony}}{{Code|p.SprawdzanieOrazNumerowanieElementowychFormStrony}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fi69mxoa15xozgm68jfwmc1wzg8qtt2 547842 547841 2026-07-20T04:57:47Z Persino 2851 547842 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumeracjaObiektówStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} 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. Funkcje w module: {{Code|{{ld2|StronicowyParser/NumeracjaObiektówStron}}, jest uzupełnieniem modułu: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, co jest powiedziane w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}. == {{Śródtytuł|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}}{{Code|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}} == == {{Śródtytuł|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}}{{Code|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}} == == {{Śródtytuł|p.SprawdzanieReferencji}}{{Code|p.SprawdzanieReferencji}} == == {{Śródtytuł|p.SprawdzanieOrazNumerowanieElementowychFormStrony}}{{Code|p.SprawdzanieOrazNumerowanieElementowychFormStrony}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9bbd65y3tnw38lvcajg836ubna5v95i 547843 547842 2026-07-20T04:58:05Z Persino 2851 547843 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumeracjaObiektówStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} 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. Funkcje w module: {{Code|{{ld2|StronicowyParser/NumeracjaObiektówStron}}}}, jest uzupełnieniem modułu: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, co jest powiedziane w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}. == {{Śródtytuł|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}}{{Code|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}} == == {{Śródtytuł|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}}{{Code|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}} == == {{Śródtytuł|p.SprawdzanieReferencji}}{{Code|p.SprawdzanieReferencji}} == == {{Śródtytuł|p.SprawdzanieOrazNumerowanieElementowychFormStrony}}{{Code|p.SprawdzanieOrazNumerowanieElementowychFormStrony}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1ms24wpvph1dc6d2nk7e4nxxwsfibt3 547844 547843 2026-07-20T07:21:47Z Persino 2851 /* {{Śródtytuł|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}}{{Code|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}} */ 547844 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumeracjaObiektówStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} 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. Funkcje w module: {{Code|{{ld2|StronicowyParser/NumeracjaObiektówStron}}}}, jest uzupełnieniem modułu: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, co jest powiedziane w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}. == {{Śródtytuł|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}}{{Code|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - * {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}} - * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} - == {{Śródtytuł|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}}{{Code|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}} == == {{Śródtytuł|p.SprawdzanieReferencji}}{{Code|p.SprawdzanieReferencji}} == == {{Śródtytuł|p.SprawdzanieOrazNumerowanieElementowychFormStrony}}{{Code|p.SprawdzanieOrazNumerowanieElementowychFormStrony}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> tki3kho83n93m417yth5uvmkpc0duol 547846 547844 2026-07-20T07:32:04Z Persino 2851 547846 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumeracjaObiektówStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} 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. Funkcje w module: {{Code|{{ld2|StronicowyParser/NumeracjaObiektówStron}}}}, jest uzupełnieniem modułu: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, co jest powiedziane w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}. == {{Śródtytuł|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}}{{Code|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - * {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}} - * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} - == {{Śródtytuł|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}}{{Code|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|dane_artykulu}} {{Patrz|dane_artykulu}} * {{Code|biezacy_artykul}} {{Patrz|biezacy_artykul}} * {{Code|numer_artykulu_w_ksiazce}} {{Patrz|numer_artykulu_w_ksiazce}} * {{Code|stronicowyparser_obiekty_modul}} {{Patrz|stronicowyparser_obiekty_modul}} * {{Code|__Funkcja}} {{Patrz|__Funkcja}} == {{Śródtytuł|p.SprawdzanieReferencji}}{{Code|p.SprawdzanieReferencji}} == == {{Śródtytuł|p.SprawdzanieOrazNumerowanieElementowychFormStrony}}{{Code|p.SprawdzanieOrazNumerowanieElementowychFormStrony}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> r750iw4jw0nonfolr2bklq8v1qz0nz2 547847 547846 2026-07-20T07:40:16Z Persino 2851 /* {{Śródtytuł|p.SprawdzanieReferencji}}{{Code|p.SprawdzanieReferencji}} */ 547847 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumeracjaObiektówStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} 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. Funkcje w module: {{Code|{{ld2|StronicowyParser/NumeracjaObiektówStron}}}}, jest uzupełnieniem modułu: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, co jest powiedziane w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}. == {{Śródtytuł|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}}{{Code|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - * {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}} - * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} - == {{Śródtytuł|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}}{{Code|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|dane_artykulu}} {{Patrz|dane_artykulu}} * {{Code|biezacy_artykul}} {{Patrz|biezacy_artykul}} * {{Code|numer_artykulu_w_ksiazce}} {{Patrz|numer_artykulu_w_ksiazce}} * {{Code|stronicowyparser_obiekty_modul}} {{Patrz|stronicowyparser_obiekty_modul}} * {{Code|__Funkcja}} {{Patrz|__Funkcja}} == {{Śródtytuł|p.SprawdzanieReferencji}}{{Code|p.SprawdzanieReferencji}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SprawdzanieReferencji(self,tablica_zmiennych,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu,stronicowyparser_obiekty_modul,CzyNum)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych}}, * {{Code|link_obiekt_lub_wypowiedzenie}} {{Patrz|link_obiekt_lub_wypowiedzenie}} -, * {{Code|nazwa_obiektu1}} {{Patrz|nazwa_obiektu1}} - * {{Code|nazwa_obiektu2}} {{Patrz|nazwa_obiektu2}} - * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}}. == {{Śródtytuł|p.SprawdzanieOrazNumerowanieElementowychFormStrony}}{{Code|p.SprawdzanieOrazNumerowanieElementowychFormStrony}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ow6qi4hubk543b1yht56pjr9gtu00su 547848 547847 2026-07-20T07:42:44Z Persino 2851 /* {{Śródtytuł|p.SprawdzanieReferencji}}{{Code|p.SprawdzanieReferencji}} */ 547848 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumeracjaObiektówStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} 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. Funkcje w module: {{Code|{{ld2|StronicowyParser/NumeracjaObiektówStron}}}}, jest uzupełnieniem modułu: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, co jest powiedziane w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}. == {{Śródtytuł|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}}{{Code|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - * {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}} - * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} - == {{Śródtytuł|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}}{{Code|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|dane_artykulu}} {{Patrz|dane_artykulu}} * {{Code|biezacy_artykul}} {{Patrz|biezacy_artykul}} * {{Code|numer_artykulu_w_ksiazce}} {{Patrz|numer_artykulu_w_ksiazce}} * {{Code|stronicowyparser_obiekty_modul}} {{Patrz|stronicowyparser_obiekty_modul}} * {{Code|__Funkcja}} {{Patrz|__Funkcja}} == {{Śródtytuł|p.SprawdzanieReferencji}}{{Code|p.SprawdzanieReferencji}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SprawdzanieReferencji(self,tablica_zmiennych,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu,stronicowyparser_obiekty_modul,CzyNum)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych}}, * {{Code|link_obiekt_lub_wypowiedzenie}} {{Patrz|link_obiekt_lub_wypowiedzenie}} -, * {{Code|nazwa_obiektu1}} {{Patrz|nazwa_obiektu1}} - * {{Code|nazwa_obiektu2}} {{Patrz|nazwa_obiektu2}} - * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. == {{Śródtytuł|p.SprawdzanieOrazNumerowanieElementowychFormStrony}}{{Code|p.SprawdzanieOrazNumerowanieElementowychFormStrony}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> hg8c36ssxr1rn0jgt0c305j8zaqe1l5 547849 547848 2026-07-20T07:46:38Z Persino 2851 /* {{Śródtytuł|p.SprawdzanieOrazNumerowanieElementowychFormStrony}}{{Code|p.SprawdzanieOrazNumerowanieElementowychFormStrony}} */ 547849 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/NumeracjaObiektówStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} 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. Funkcje w module: {{Code|{{ld2|StronicowyParser/NumeracjaObiektówStron}}}}, jest uzupełnieniem modułu: {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}}, co jest powiedziane w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}. == {{Śródtytuł|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}}{{Code|p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - * {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}} - * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} - == {{Śródtytuł|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}}{{Code|p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|dane_artykulu}} {{Patrz|dane_artykulu}} * {{Code|biezacy_artykul}} {{Patrz|biezacy_artykul}} * {{Code|numer_artykulu_w_ksiazce}} {{Patrz|numer_artykulu_w_ksiazce}} * {{Code|stronicowyparser_obiekty_modul}} {{Patrz|stronicowyparser_obiekty_modul}} * {{Code|__Funkcja}} {{Patrz|__Funkcja}} == {{Śródtytuł|p.SprawdzanieReferencji}}{{Code|p.SprawdzanieReferencji}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SprawdzanieReferencji(self,tablica_zmiennych,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu,stronicowyparser_obiekty_modul,CzyNum)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych}}, * {{Code|link_obiekt_lub_wypowiedzenie}} {{Patrz|link_obiekt_lub_wypowiedzenie}} -, * {{Code|nazwa_obiektu1}} {{Patrz|nazwa_obiektu1}} - * {{Code|nazwa_obiektu2}} {{Patrz|nazwa_obiektu2}} - * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. == {{Śródtytuł|p.SprawdzanieOrazNumerowanieElementowychFormStrony}}{{Code|p.SprawdzanieOrazNumerowanieElementowychFormStrony}} == Definicja skrótow funkcji: <syntaxhighlight lang="lua"> function p.SprawdzanieOrazNumerowanieElementowychFormStrony(self, dane_artykulu, biezacy_artykul, nazwa_obiektu, numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|dane_artykulu}} - jak w: {{LinkPatrz|dane_artykulu}}, * {{Code|biezacy_artykul}} - jak w: {{LinkPatrz|biezacy_artykul}}, * {{Code|numer_artykulu_w_ksiazce}} - jak w: {{LinkPatrz|numer_artykulu_w_ksiazce}}, * {{Code|stronicowyparser_obiekty_modul}} - jak w: {{LinkPatrz|stronicowyparser_obiekty_modul}}, * {{Code|__Funkcja}} - jak w: {{LinkPatrz|__Funkcja}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> synxx7ve2y5edc34sho4ng2c5mif635