Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.21 first-letter Media Specjalna Dyskusja Wikipedysta Dyskusja wikipedysty Wikibooks Dyskusja Wikibooks Plik Dyskusja pliku MediaWiki Dyskusja MediaWiki Szablon Dyskusja szablonu Pomoc Dyskusja pomocy Kategoria Dyskusja kategorii Wikijunior Dyskusja Wikijuniora TimedText TimedText talk Moduł Dyskusja modułu Wydarzenie Dyskusja wydarzenia Szablon:NawigacjaSpecjalna/Ustawienia/OGRE/config 10 5430 557791 501551 2026-09-27T18:20:39Z Persino 2851 557791 wikitext text/x-wiki <includeonly>{{Conf|{{{1}}}|nawigacja:styl=NawigacyjnaRamka}}</includeonly><noinclude>{{Dokumentacja|zawartość=Strona ustawień szablonu {{s|NawigacjaSpecjalna}} (przy użyciu {{s|Autonawigacja|OGRE}}) do książki {{lg|OGRE}}.}}{{Kategoria|Szablony nawigacyjne ustawień do autonawigacji podręczników}}</noinclude> bmqa1r2bgdewuu08p0lgv88t4n6svhx Szablon:NawigacjaSpecjalna/Ustawienia/CSS/config 10 10948 557790 501550 2026-09-27T18:20:06Z Persino 2851 557790 wikitext text/x-wiki <includeonly>{{Conf|{{{1}}}|nawigacja:styl=UnikalnaRamka}}</includeonly><noinclude>{{Dokumentacja|zawartość=Strona ustawień szablonu {{s|NawigacjaSpecjalna}} (przy użyciu {{s|Autonawigacja|CSS}}) do książki {{lg|CSS}}.}}{{Kategoria|Szablony nawigacyjne ustawień do autonawigacji podręczników}}</noinclude> 6hl58mery9qia8i4nfhhatmrg8xtikp Moduł:Techniczne 828 56417 557773 557694 2026-09-27T12:53:16Z Persino 2851 557773 Scribunto text/plain local p={}; p["Pierwszy niepusty"] = function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); local i=1; local liczba_elementow_w_tablicy_args=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](args,"test"); local licznik=1; while true do local test=args["test"..i]; local _i=args[i]; local zmienna=test or _i; local czy_tak=parametry_modul.CzyTak(zmienna); if(czy_tak)then return (_i)and _i or "{{{"..i.."}}}"; end; if(licznik>=liczba_elementow_w_tablicy_args)then return;end; if(zmienna)then licznik=licznik+1;end; i=i+1; end; end; function p.NowikiParametr(frame) local parametr=frame.args[1]; local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane"); parametr=mw.ustring.gsub(parametr,"(.)",function(s) return techniczne_dane_modul.tablica_szablonowa[s] or techniczne_dane_modul.tablica_linki[s] or techniczne_dane_modul.tablica_tagowa[s]; end); return parametr; end; function p.EncodeParametr(frame) local parametr=frame.args[1]; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); parametr=mw.ustring.gsub(parametr,"(\")([^\"]+)(\")",function(a,str,b) return a..mw.text.encode(str)..b; end) parametr=mw.ustring.gsub(parametr,"<(/?)([^<>]+)>",function(znak,str) local znacznik=mw.ustring.match(str,"^(%a+)$") or mw.ustring.match(str,"^(%a+)%s+"); if(znacznik)then znacznik=mw.getContentLanguage():lc(znacznik); local czy_znacznik=szablonowe_dane_modul.tablica_html_mechanizmu_mediawiki[znacznik]; if(not czy_znacznik)then return "&amp;lt;"..znak..mw.text.encode(str).."&amp;gt;"; end; end; end); parametr=mw.text.decode(parametr); parametr=mw.text.encode(parametr); return parametr; end; p["PełnaNazwaOpisuModułu"] = function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local pelna_nazwa_strony=PobierzParametr(1) or PobierzParametr("nazwa"); local komunikat = mw.message.new('Scribunto-doc-page-name', '$1'); local zawartosc_komunikatu; if(komunikat:exists())then zawartosc_komunikatu=komunikat:plain(); zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu); else zawartosc_komunikatu="Module:$1/opis"; end; local nazwy_modul=require("Module:Nazwy"); local pelna_nazwa_strony_wedlug_strony_komunikatu=nazwy_modul["PEŁNANAZWASTRONY"](zawartosc_komunikatu); local pelna_nazwa_strony_podanej_lub_aktualnej=pelna_nazwa_strony and nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony) or nazwy_modul["PEŁNANAZWASTRONY"](); local wzor_pelnej_nazwy_strony=mw.ustring.gsub(pelna_nazwa_strony_wedlug_strony_komunikatu,"%$1",".-"); if(not mw.ustring.match(pelna_nazwa_strony_podanej_lub_aktualnej,"^"..wzor_pelnej_nazwy_strony.."$"))then local nazwa_strony=nazwy_modul["NAZWASTRONY"](pelna_nazwa_strony_podanej_lub_aktualnej); local przetworzona_nazwa_strony=p["TekstBezOdwołańDoParametrówWeWzorze"](nazwa_strony); local pelna_nazwa_strony_opisu, _=mw.ustring.gsub(zawartosc_komunikatu,"%$1",przetworzona_nazwa_strony) local pelna_strona_opisu=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_opisu); return pelna_strona_opisu; else return pelna_nazwa_strony_podanej_lub_aktualnej; end; end; p["CzyIstniejeDanaPrzestrzeńNazw"] = function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_przestrzeni_nazw_lub_jego_identyfikator=PobierzParametr(1) or PobierzParametr("nazwa"); local klucz_projektu=PobierzParametr("klucz projektu"); local kod_jezyka=PobierzParametr("kod języka"); local kod_projektu=PobierzParametr("kod projektu"); local wiki_modul=require("Module:Wiki"); local czy_biezace_wiki=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,} local nazwy_modul=require("Module:Nazwy"); local uchwyt_przestrzeni_nazw; if(czy_biezace_wiki)then uchwyt_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,uchwyt="tak",}; else uchwyt_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,uchwyt="tak",}; end; if(uchwyt_przestrzeni_nazw)then return "tak"; else return; end; end; local ZnakRegex=function(s) return ( (mw.ustring.match(s,"^%a$")) and("["..mw.ustring.upper(s)..mw.ustring.lower(s).."]") or ( ((not mw.ustring.match(s,"^[%s_]$")) and ("%"..s) or ("[%s_]+")) ) ); end; p["WzórBezOdróżnianiaWielkościLiterNazwy"] =function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local wzor, _ = mw.ustring.gsub(nazwa,"(.)", function (s) return ZnakRegex(s);end ); return wzor; end; p["WzórDanejPrzestrzeniNazw"] = function (frame) local wzor=p["WzórBezOdróżnianiaWielkościLiterNazwy"](frame); wzor="[%s_]*"..wzor.."[%s_]*"; return wzor; end; p["WzórNazwyStrony"] = function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local strona=PobierzParametr(1) or PobierzParametr("nazwa"); local wzor,_=mw.ustring.gsub(strona,"([%[%]%(%)%+%-%*%?%.%^%$%%'])","%%%1"); wzor,_=mw.ustring.gsub(wzor,"^[%s_]*([^%s_])", function (s) return ZnakRegex(s);end ); wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+") wzor="[%s_]*"..wzor.."[%s_]*"; return wzor; end; p["WzórPełnejNazwyStrony"] = function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local strona=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona); local nazwa_strony=nazwy_modul["NAZWASTRONY"](strona); if(nazwa_przestrzeni~="")then nazwa_przestrzeni=p["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni); end; nazwa_strony=p["WzórNazwyStrony"](nazwa_strony); return ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_strony; end; p["TekstBezOdwołańDoParametrówWeWzorze"] = function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("nazwa"); tekst=mw.ustring.gsub(tekst,"%%%%","%%%%%%"); tekst=mw.ustring.gsub(tekst,"%%(%d+)","%%%%%1"); return tekst; end; p["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"] = function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("nazwa"); tekst=mw.ustring.gsub(tekst,"%%(%a+)","%%%%%1"); return tekst; end; p["PrzekształćWzórDoCzystegoTekstu"] = function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("nazwa"); tekst=mw.ustring.gsub(tekst,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1"); return tekst; end; function p.CzyStronaIstniejeJejParametry(nazwa_strony_lub_uchwyt_strony,czy_zawartosc) local uchwyt_strony; local parametry_modul=require("Module:Parametry"); local czy_string=parametry_modul.TypeString(nazwa_strony_lub_uchwyt_strony); local TempFunc=function(uchwyt_strony) if(czy_zawartosc)then return nil,nil,false; else return false; end; end; if(czy_string)then uchwyt_strony = mw.title.makeTitle('',nazwa_strony_lub_uchwyt_strony); if(not uchwyt_strony)then return TempFunc();end; else uchwyt_strony=nazwa_strony_lub_uchwyt_strony; if(not uchwyt_strony)then return TempFunc();end; end; local id=uchwyt_strony.namespace; if((id==-1)or(id==-2))then local czy_istnieje=uchwyt_strony and uchwyt_strony.exists or nil; if(not czy_zawartosc)then return czy_istnieje; else return uchwyt_strony,nil,czy_istnieje; end; else local tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil; if(czy_zawartosc)then if(not tekst_artykulu)then return uchwyt_strony,nil,false; end; return uchwyt_strony,tekst_artykulu,true; end; if(not tekst_artykulu)then return false; end; return true; end; end; function p.PoliczZbiory(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local tekst=parametry_modul.CzyTak(args["tekst"]); local liczba_istniejacych_zbiorow=0; local tabela_uchwytow_stron={}; for _,nazwa_strony in ipairs(args) do local uchwyt_strony,tekst_artykulu,czy_istnieje = p.CzyStronaIstniejeJejParametry(nazwa_strony,true); tabela_uchwytow_stron[#tabela_uchwytow_stron+1]={uchwyt_strony,tekst_artykulu,}; if((uchwyt_strony)and(czy_istnieje)and((not tekst)or((tekst)and(tekst_artykulu))))then liczba_istniejacych_zbiorow=liczba_istniejacych_zbiorow+1; end; end; return liczba_istniejacych_zbiorow,tabela_uchwytow_stron; end; function p.TransformacjaWzoru(ciag) return mw.ustring.gsub(ciag,"[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1"); end; p["WyświetlajKodySpecjalne"] = function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("nazwa"); local html_modul=require("Module:Html"); local i=html_modul.KodHTMLZnaku("&"); local hash=html_modul.KodHTMLZnaku("#"); local sr=html_modul.KodHTMLZnaku(";"); text=mw.ustring.gsub(text,"&#(%d+);",i..hash.."%1"..sr); text=mw.ustring.gsub(text,"&(%a+);",i.."%1"..sr); return text; end; function p.Wikikod(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1); local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template"; local nazwa_modulu=((parametry_modul["CzyTakCiąg"](przestrzen)) and (przestrzen..":") or "")..(nazwa or "Przykłowa strona"); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local szablonowe_modul=require("Module:Szablonowe"); local tab_komentarze={}; local licznik_komentarze=1; local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,nazwa_modulu,nil,false,nil,true,nil,nil,nil,nil,function(tekst_artykulu) tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz) local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze); tab_komentarze[licznik_komentarze]=komentarz; licznik_komentarze=licznik_komentarze+1; return kod; end); return tekst_artykulu; end); if(not tekst)then local blad_modul=require("Module:Błąd"); return blad_modul.error{args={tag="span",tekst="Nie ma takiej strony lub artykulu."}}; end; tekst=p["TekstBezOdwołańDoParametrówWeWzorze"](tekst); local html_modul=require("Module:Html"); tekst=mw.ustring.gsub(tekst,"&(%a+);","&amp;%1;"); tekst=mw.ustring.gsub(tekst,"&#(%d+);","&amp;#%1;"); local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane"); local tab_szablonowa=techniczne_dane_modul.tablica_szablonowa; local tab_linki=techniczne_dane_modul.tablica_linki; local tab_tagow=techniczne_dane_modul.tablica_tagowa; local tabela_wikitabelowa=techniczne_dane_modul.tabela_wikitabelowa; local tab_zmienne=function(s) return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s]; end; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe") local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); local TekstBezKomentarzy=function(tekst,poczatek) tekst=mw.ustring.gsub(tekst,(poczatek or "")..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE"),function(kod) local kod=tonumber(kod); local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod]; if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then return ""; end; return nil; end); --tekst=parametry_modul["Odstępy"](tekst); return tekst; end; local UsuwanieModyfikatoroweStron=function(nazwa,tabela_modyfikatorow) if(not tabela_modyfikatorow)then return nazwa,"";end; --local nazwa,komentarz=TekstBezKomentarzy(nazwa,"^[%s_]*"); local modyfikatory=""; repeat local ile_zmieniono=0; local __modyfikatory=nil; nazwa=mw.ustring.gsub(nazwa,"^([%s_]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE")..")",function(poczatek,kod) local kod=tonumber(kod); local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod]; if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then __modyfikatory=poczatek; return ""; end; end); nazwa=mw.ustring.gsub(nazwa,"^(([%s_]*)(#?)([%s_]*)([^%s#:_]+)([%s_]*:))",function(calosc,a,b,c,d,e) d=b..TekstBezKomentarzy(d)..":"; if(tabela_modyfikatorow[d])then ile_zmieniono=ile_zmieniono+1; modyfikatory=modyfikatory..(__modyfikatory or "")..calosc; return ""; end; return nil; end); if(ile_zmieniono==0)then nazwa=(__modyfikatory or "")..nazwa; end; until (ile_zmieniono==0); return nazwa,modyfikatory; end; local ZamieniajZnakiNaMikroSzablony=function(szablon,__funkcja) szablon=mw.ustring.gsub(szablon,"(.)",function(znak) local odpowied; if(__funkcja)then odpowied=__funkcja(znak); else odpowied=tab_linki[znak] or tab_szablonowa[znak]; end; if(odpowied)then return odpowied;end; return znak; end); return szablon; end; local CzyBezDwukropka=function(dwukropki) return (not mw.ustring.match(dwukropki,":") and "tak" or ""); end; tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then local szablon_old=szablon; szablon=TekstBezKomentarzy(szablon); local pseudoszablon,tabela_modyfikatorow=szablonowe_modul["NazwaSzablonuWywołania"](szablon); if((pseudoszablon)and(((tabela_modyfikatorow)and((szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow)) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["int:"])) and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:"))) or((not tabela_modyfikatorow)and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:"))) ))then local UstawianieLinkowe=function(szablon,ktore) local SzablonStrona=function(szablon) local strona=TekstBezKomentarzy(szablon); strona=parametry_modul["Odstępy"](strona); local nazwa,modyfikatory=UsuwanieModyfikatoroweStron(szablon,tabela_modyfikatorow); strona=mw.ustring.gsub(strona,"=","{{=}}"); nazwa=mw.ustring.gsub(nazwa,"=","{{=}}"); return "{{s|oryginalna=tak|analiza=tak|"..strona .."|nazwa="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..nazwa..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1) .."|modyfikatory="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..modyfikatory..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1) ..(ktore and "|" or "}}"); end; if(ktore)then szablon=mw.ustring.gsub(szablon,"=","{{=}}"); szablon,ile=mw.ustring.gsub(szablon,"^{{([^|]-)|",function(szablon) return SzablonStrona(szablon); end); else szablon=mw.ustring.gsub(szablon,"^{{([^|]-)}}",function(szablon) return SzablonStrona(szablon); end); end; return szablon; end; if(mw.ustring.match(szablon_old,"|"))then if(mw.ustring.match(szablon,"^{{[^|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."[^|]*|"))then szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa); return szablon_old; else return UstawianieLinkowe(szablon_old,true); end; else if(mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa); return szablon_old; end; if(pseudoszablon)then if(((not tabela_modyfikatorow)or((not tabela_modyfikatorow["int:"])and(not tabela_modyfikatorow["#invoke:"])))and(tab_zmienne(pseudoszablon)))then szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa); return szablon_old; else return UstawianieLinkowe(szablon_old,false); end; else return UstawianieLinkowe(szablon_old,false); end; end; else szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa); return szablon_old; end; elseif(obiekt=="LINKW")then local __szablon=TekstBezKomentarzy(szablon); local __dwukropki,__strona=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)%]%]$"); if(__strona)then if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then szablon=ZamieniajZnakiNaMikroSzablony(szablon); return szablon; else local strona=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)%]%]$"); return "{{l|"..strona.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}" end; else local __dwukropki,__strona,__nazwa=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)|(.*)%]%]$"); if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then szablon=ZamieniajZnakiNaMikroSzablony(szablon); return szablon; else local strona,nazwa=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)|(.*)%]%]$"); return "{{l|"..strona.."|"..nazwa.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}"; end; end; elseif(obiekt=="LINKZ")then local __szablon=TekstBezKomentarzy(szablon); local __strona=mw.ustring.match(__szablon,"^%[%s*(%S+)%s*%]$"); if(__strona)then if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then szablon=ZamieniajZnakiNaMikroSzablony(szablon); return szablon; else local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s*)%]$"); return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}"; end; else local __strona,__nazwa=mw.ustring.match(__szablon,"^%[(%s*%S+)(%s+.-)%]$"); if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then szablon=ZamieniajZnakiNaMikroSzablony(szablon); return szablon; else local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s+.-)%]$"); return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}"; end; end; elseif(obiekt=="ZMIENNA")then szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak) local odpowied=tab_szablonowa[znak]; return odpowied; end); return szablon; elseif((obiekt=="NOWIKI") or(obiekt=="PRE") or(obiekt=="MATH") or(obiekt=="ŹRÓDŁO") or(obiekt=="GALERIA") or(obiekt=="MAPAOBRAZU") or(obiekt=="PUDEŁKOWEJŚCIA") )then szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak) local odpowied=tab_linki[znak] or tab_szablonowa[znak] or tab_tagow[znak]; return odpowied; end); return szablon; elseif(obiekt=="QUIZ")then szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak) local odpowied=tab_szablonowa[znak] or tab_tagow[znak]; return odpowied; end); return szablon; elseif((obiekt=="ZNACZNIK")or(obiekt=="INCLUDE"))then szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak) local odpowied=(znak~="\"")and tab_tagow[znak] or nil; return odpowied; end); return szablon; elseif(obiekt=="ATRYBUTY")then szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("(UCIECZKI)"),function(obiekt,kod) kod=tonumber(kod); local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon; end); szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak) local odpowied=tab_tagow[znak] or nil; return odpowied; end); return szablon; elseif(obiekt=="WIKITABELA")then szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak) local odpowied=tabela_wikitabelowa[znak]; return odpowied; end); return szablon; elseif(obiekt=="INNEPRE")then --szablon=mw.ustring.gsub(szablon,"^[^%S\n]","&amp;nbsp;"); return szablon; else return szablon; end; end); tekst=frame:getParent():preprocess(tekst); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ"),function(kod) kod=tonumber(kod); local komentarz=tab_komentarze[kod]; komentarz=mw.ustring.gsub(komentarz,"^<!%-%-(.-)%-%->$",function(zawartosc) return "&lt;!--"..zawartosc.."--&gt;"; end); return komentarz; end); return tekst; end; p.WikikodStrony = function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1); local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template"; if(not parametry_modul.CzyTak(nazwa))then return;end; local title=mw.title.makeTitle(przestrzen,nazwa); local text=title and title:getContent() or false; if(not text)then return;end; text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)",""); text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1"); return text; end; function p.LuaSubst(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); local strona=args[1] or args["strona"]; if(not strona)then local blad_modul=require("Module:Błąd"); return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}}; end; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true); if(not tekst)then local blad_modul=require("Module:Błąd"); return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}}; end; local inkludowany=parametry_modul.CzyTak(args["inkludowana"]); if(inkludowany)then tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>",""); tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1"); else local dokumentacja=parametry_modul.CzyTak(args["dokumentacja"]); if(dokumentacja)then tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","%1"); tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>",""); end; end; return tekst; end; p["LuaSurowySzablonSubst"] = function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); local strona=args["strona"]; if(not strona)then local blad_modul=require("Module:Błąd"); return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}}; end; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true); if(not tekst)then local blad_modul=require("Module:Błąd"); return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}}; end; --- --- local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane"); local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,nil, function(szablon,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"", nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(nazwa_szablonu=="Moduł:Ramka")then local Funkcja=tabela_parametrow_szablonu[true]; if((not Funkcja)or(Funkcja~="Szablon"))then return;end; local pelna_nazwa_szablonu=tabela_parametrow_szablonu["Nazwa"]; if(not pelna_nazwa_szablonu)then return;end; pelna_nazwa_szablonu="Szablon:"..pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,pelna_nazwa_szablonu,nil,false,nil,true,true); if(not tekst)then return;end; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(wartosc_zmiennej)then return wartosc_zmiennej; end; end; end,nil,nil,nil,nil, function(tekst_artykulu,tab_element) return nil,true,nil,true; end, function(nazwa) return true; end); tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst; end; end); if(wynik)then return wynik;end; end; return; end,nil,nil,nil,nil, function(tekst_artykulu,tab_element) return nil,true,nil,true; end, function(nazwa) return true; end); local specjalne_modul=require("Module:Specjalne"); local tab_modyfikatory={["#if:"]=true,["#ifeq:"]=true,["#ifexist:"]=true,["#ifexpr:"]=true,}; local tab_mediawiki=function(s) return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s]; end; local tabela_zmiennych={}; local tablica_danych_parametrow_szablonu_strony={}; local function UsuwaniePseudoSzablonowe(szablon) szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"", function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(tab_mediawiki(nazwa_szablonu))then return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil, function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$"))); return wynik; end, function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) return false; end); if(wynik)then return wynik;end; end; return nil,true; end); return szablon; end; local function PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(tabela_modyfikatorow)then for name,value in pairs(tabela_modyfikatorow)do if(tab_modyfikatory[name])then local warunek,dalej=mw.ustring.match(szablon,"^{{([^{}|]+)(.-)$"); if(warunek)then local iterator=szablonowe_modul.IteratorSzablonowyZakodowanegoTekstu(nil,dalej,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_usunac_kreski_pionowe=false; for szablon_dalej,obiekt_dalej,kod_dalej in iterator do if(obiekt_dalej=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon_dalej,tablica_danych_parametrow_szablonu_strony,kod_dalej,"", function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((mw.ustring.match(nazwa_szablonu,"^Infobox .*$"))or(mw.ustring.match(nazwa_szablonu,"^Link%u")))then return true; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil, function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$"))); return wynik; end, function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) return false; end); if(wynik)then czy_usunac_kreski_pionowe=true; break; end; elseif(obiekt_dalej=="LINKW")then local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon_dalej); if(wynik)then czy_usunac_kreski_pionowe=true; break; end; end; end; if(czy_usunac_kreski_pionowe)then warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="ZMIENNA")then szablon=UsuwaniePseudoSzablonowe(szablon); szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c) if(b=="")then return a..c; end; end); return szablon; end; end); return "{{"..warunek..dalej; else local warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul); return "{{"..warunek..dalej; end; end; end; end; end; end; local function PlikowePrzetwarzanie(szablon,obiekt,kod) local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="ZMIENNA")then szablon=UsuwaniePseudoSzablonowe(szablon); local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|"); if(not numerowana)then szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c) if(b=="")then return a..c; end; end); end; return szablon; end; return nil,true; end); return szablon; end; local function PrzetwarzanieDivowe(szablon,obiekt,kod) szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="ZMIENNA")then szablon=UsuwaniePseudoSzablonowe(szablon); local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|"); if(numerowana)then szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c) if(b=="")then return a..c; end; end); end; return szablon; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"", function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="ZMIENNA")then szablon=UsuwaniePseudoSzablonowe(szablon); local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|"); if(not numerowana)then szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c) if(b=="")then return a..c; end; end); end; return szablon; end; return nil,true; end); return szablon; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod); return wynik; end,nil,nil,nil,nil,nil,nil,nil,nil, function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$"))); return wynik; end, function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) return false; end); if(wynik)then return wynik;end; return nil,true; end; return nil,true; end); return szablon; end; local function PrzetwarzanieSzablonowe(szablon,obiekt,kod) local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"", function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local infobox=mw.ustring.match(nazwa_szablonu,"^Infobox .*$"); local link=mw.ustring.match(nazwa_szablonu,"^Link%u"); if((infobox)or(link))then if((link)and(not infobox))then szablon="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>"; end; local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod ,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"", function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return nil; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod); if(wynik)then return wynik;end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$"))); return wynik; end, function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) return false; end); if(wynik)then return wynik;end; return nil,true; elseif(obiekt=="ZMIENNA")then szablon=UsuwaniePseudoSzablonowe(szablon); szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c) if(((infobox)and(b==""))or((link)and((tonumber(a1))or(tabela_zmiennych[a1]))))then return a..c; end; end); return szablon; end; return nil,true; end); return szablon; end; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod); if(wynik)then return wynik;end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$"))); return wynik; end, function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) return false; end); return wynik; end; tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then szablon=PrzetwarzanieSzablonowe(szablon,obiekt,kod); if(szablon)then return szablon;end; elseif(obiekt=="ZMIENNA")then local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|"); if(not numerowana)then szablon=UsuwaniePseudoSzablonowe(szablon); szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c) if(b=="")then return a..c; end; end); return szablon; end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="div")then szablon=PrzetwarzanieDivowe(szablon,obiekt,kod); return szablon; end; elseif(obiekt=="LINKW")then if(specjalne_modul["CzyPlik"](szablon))then szablon=PlikowePrzetwarzanie(szablon,obiekt,kod); return szablon; else local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon); if(wynik)then local spanramka="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>"; return spanramka; end; end; end; return szablon; end); return tekst; end; function p.NowaLinia(frame) return "\n"; end; function p.Nowiki(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); local PobierzParametr=parametry_modul.PobierzParametr(args); local tekst=PobierzParametr("tekst") or PobierzParametr(1); local sprawdz_modul=require("Module:Sprawdź"); tekst=sprawdz_modul["UsuńKategorięSprawdzaniaParametrówSzablonu"]{args={[1]=tekst,},} tekst=mw.ustring.gsub(tekst,"([&<>={}|!%+%-%*;:#\"\'%[%]/\\])",function(znak) return "&#"..mw.ustring.byte(znak)..";"; end); return tekst; end; function p.FunkcjaLua(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); local modul=require("Module:"..(args[1] or args["moduł"])); if(modul)then if(modul[asgs[2] or args["nazwa"] or args["funkcja"]])then local args2=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,{[1]=true,["moduł"]=true,[2]=true,nazwa=true,funkcja=true,["wyspecjalizowana"]=true,}) return modul[args[2] or args["nazwa"] or args["funkcja"]](args2); end; end; end; p["RozwińSzablonWzględemPodanychParametrów"] = function (frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame) local PobierzParametr=parametry_modul.PobierzParametr(args); local nazwa=PobierzParametr("Nazwa strony") or PobierzParametr("Nazwa") or "Nazwa strony"; local przestrzen=PobierzParametr("Miano przestrzeni nazw") or PobierzParametr("Przestrzeń") or "Template"; local title=mw.title.makeTitle(przestrzen,nazwa); local text=title and title:getContent() or nil; if(not text)then local blad_modul=require("Module:Błąd"); return blad_modul.error{args={tag="span",tekst="Strona nie istnieje lub nie ma zawartości."}}; end; text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)",""); text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1"); local bezkluczy={ ["Nazwa strony"]=true, ["Nazwa"]=true, ["Miano przestrzeni nazw"]=true, ["Przestrzeń"]=true, ["wyspecjalizowana"]=true, ["nie rozwiń"]=true, }; local tab=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,bezkluczy); local frame2=mw.getCurrentFrame():newChild{title=(parametry_modul.CzyTak(przestrzen)and (przestrzen..":"..nazwa) or nazwa),args=tab}; text=parametry_modul.CzyTak(frame.args["nie rozwiń"]) and text or frame2:preprocess(text); return text; end; p["LiczbaBajtówCiąguDoNormy"] = function(frame) local str=frame.args[1] or frame.args["ciąg"]; local ile=tonumber(frame.args[2] or frame.args["norma"]); if(not ile)then return #str;end; if(#str<=ile)then return #str; end; return nil; end; p["LiczbaStronJakoPozycjeDanejKategorii"] = function(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); local kategoria=parametry_modul.CzyTak(args["kategoria"]) and args["kategoria"] or "Category:Przykładowa kategoria"; local kat={ ["subcats"]=true, ["files"]=true, ["pages"]=true, } local typ=args["typ"]; typ=(typ and kat[args["typ"]]) and args["typ"] or "all"; local nazwy_modul=require("Module:Nazwy"); kategoria=nazwy_modul["NAZWASTRONY"](kategoria); return mw.site.stats.pagesInCategory(kategoria,typ); end; p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"] = function(frame,tablica_danych_parametrow_szablonu_strony,kod) ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony; end; end; end; --- local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local adres_wzgledny=PobierzParametr(1) or PobierzParametr("względny"); if(not mw.ustring.match(adres_wzgledny,"/"))then return adres_wzgledny;end; local adres_biezacy=PobierzParametr(2) or PobierzParametr("bieżący"); local adres; local dwukropek; if(mw.ustring.match(adres_wzgledny,"^[%s_]*/"))then if(adres_biezacy)then adres_biezacy,dwukropek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:",""); adres=adres_biezacy..adres_wzgledny; else return nil; end; else if((mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*%.[%s_]*/")))then if(adres_biezacy)then adres_biezacy,dwukrowek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:",""); adres=adres_biezacy.."/"..adres_wzgledny; else return nil; end; else adres_wzgledny,dwukropek=mw.ustring.gsub(adres_wzgledny,"^[%s_]*:",""); adres=adres_wzgledny; end; end; if(adres~="")then while((mw.ustring.match(adres,"/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*/")))do adres=mw.ustring.gsub(adres,"/[%s_]*/","/"); adres=mw.ustring.gsub(adres,"/[%s_]*%.[%s_]*/","/"); adres=mw.ustring.gsub(adres,"/+","/"); adres=mw.ustring.gsub(adres,"^/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/"); adres=mw.ustring.gsub(adres,"^[^/]*/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1); adres=mw.ustring.gsub(adres,"/([^/]*)/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1); end; adres=mw.ustring.gsub(adres,"[%s_]*/[%s_]*","/"); adres=mw.ustring.gsub(adres,"^[%s_]*/+",""); adres=mw.ustring.gsub(adres,"[%s_]*/+","/"); adres=mw.ustring.gsub(adres,"/+[%s_]*$",""); adres=mw.ustring.gsub(adres,"^[%s_]*",""); adres=mw.ustring.gsub(adres,"[%s_]*$",""); adres=mw.ustring.gsub(adres,"[%s_]+"," "); end; local wynik=(((dwukropek)and(dwukropek>0)) and ":" or "")..adres; ----- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[-1])then tablica_danych_parametrow_szablonu_strony[-1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony=wynik; end; ----- return wynik; end; function p.PrzekierowanieDoStrony(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_modulu=PobierzParametr(1); local html_modul=require("Module:Html"); local pudelko_modul=require("Module:Pudełko"); nazwa_modulu=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_modulu); local czy_nazwa_niepoprawna=pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_modulu); if(czy_nazwa_niepoprawna)then mw.log("Niepoprawna nazwa modulu strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)").."."); return; end; local title=mw.title.makeTitle('',nazwa_modulu); if(title)then local strona=title.redirectTarget; if(not strona)then return;end; return html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](strona.fullText); else mw.log("Nieprawidłowy format nazwy modułu przy uzyskiwaniu, czy strona jest odnośnikiem do innej strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)").."."); return; end; end; function p.UsuwanieKomentarzowe(tekst,__FUNKCJA_USUWANIA) local tekst=mw.ustring.gsub(tekst,"(<!%-%-.-%-%->)",__FUNKCJA_USUWANIA or ""); return tekst; end; function p.UsuwanieZnakoweKontrolneNiewidzialne(tekst,__FUKCJA_USUWANIA) local tekst=mw.ustring.gsub(tekst,"([^%C\n\t ])",__FUKCJA_USUWANIA or ""); return tekst; end; p["Forma wyrażenia po liczbie"] = function(frame) local parametry_modul=require("Module:Parametry"); local czy_table_frame=parametry_modul.TypeTable(frame); local args=czy_table_frame and (frame.args or frame) or nil; local argument_funkcji_modulu_1=czy_table_frame and (args[1] or "0") or (frame or "0"); local argument_funkcji_modulu_2=czy_table_frame and (args[2] or "zbiorów") or "zbiorów"; local argument_funkcji_modulu_3=czy_table_frame and (args[3] or "zbiór") or "zbiór"; local argument_funkcji_modulu_4=czy_table_frame and (args[4] or "zbiory") or "zbiory"; local bez_liczby=parametry_modul.CzyTak(args["bez liczby"]); local specjalne_modul=require("Module:Specjalne"); local liczba_number=specjalne_modul["WydzielLiczbę"](argument_funkcji_modulu_1); if(not liczba_number)then return "(błąd)";end; local liczba_number=math.abs(liczba_number); if(liczba_number==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;end; if(liczba_number==1)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;end; if(liczba_number<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end; if(liczba_number<20)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end; local reszta=math.fmod(liczba_number,20); if(reszta==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end; if(reszta==1)then if(liczba_number<20)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3; else return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2 end; end; if(reszta<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end; return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2; end; return p; dh0xzu0x3z5joa6o9dqgdxh559v6fcv Szablon:NawigacjaSpecjalna 10 56789 557806 442014 2026-09-28T09:25:39Z Persino 2851 557806 wikitext text/x-wiki <includeonly><!-- -->{{#invoke:Ramka|Szablon | Nazwa = NawigacjaSpecjalna/Styl/{{PobierzUstawienia|NawigacjaSpecjalna/Ustawienia/{{Jeśli niepuste|{{{książka|}}}|{{#invoke:Ramka|Szablon|Nazwa=AktualnaKsiążka|parametry funkcji modułu pudełek=tak}}}}|nawigacja:styl}} | książka = {{Jeśli niepuste|{{{książka|}}}|{{#invoke:Ramka|Szablon|Nazwa=AktualnaKsiążka|parametry funkcji modułu pudełek=tak}}}} | poprz = {{{poprz|}}} | spis treści = {{Jeśli niepuste|{{{spis treści|}}}|[[{{#invoke:Ramka|Szablon|Nazwa=AktualnaKsiążka|parametry funkcji modułu pudełek=tak}}|Spis treści]]}} | nast = {{{nast|}}} | parametry funkcji modułu pudełek = tak }}</includeonly><noinclude>{{Dokumentacja|Szablon:Autonawigacja/opis}}</noinclude> 44rgq0hvy7o18knmlzlohquc7t3yer7 Moduł:StronicowyParser/Rozdziały 828 58234 557777 557759 2026-09-27T12:53:28Z Persino 2851 557777 Scribunto text/plain local p={}; function p.NapisWprowadzeniaTekstu(rozdzial,poziom,id) local naglowek; poziom=poziom or 1; poziom=(poziom>0)and poziom or 1; if(poziom<=6)then local str_poziom=mw.ustring.rep("=",poziom); naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n"; else naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n"; end; return naglowek; end; function p.NapisWprowadzeniaTekstuHn(rozdzial,poziom,id) local naglowek; poziom=poziom or 1; poziom=(poziom>0)and poziom or 1; if(poziom<=6)then local str_poziom=mw.ustring.rep("=",poziom); naglowek="\n<h"..poziom.." "..(id and ("id=\""..id.."\"") or "")..">"..rozdzial.."</h"..poziom..">\n"; else naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n"; end; return naglowek; end; function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod) if(mw.ustring.match(zawartosc,"\n"))then return false;end; local szablonowe_modul=require("Module:Szablonowe"); local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod); tekst='\n'..tekst..'\n'; if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end; if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end; return false; end; function p.NapisWprowadzeniaTekstuHNumer(parametr) local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr); if(not naglowek)then return nil;end; if(poziom<=6)then return "<h"..poziom..">"..naglowek.."</h"..poziom..">"; else return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>"; end; end; function p.PodajNapisPoziomuWprowadzeniaTekstu(linia) if(mw.ustring.match(linia,"^%s*=*%s*$"))then return nil,0; end; local rowna_lewy=mw.ustring.match(linia,"^(=+)"); local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$"); if((rowna_lewy)and(rowna_prawy))then local min_rowna=math.min(#rowna_lewy,#rowna_prawy); local str_min_rowna=mw.ustring.rep("=",min_rowna); local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$"); if(not naglowek)then return nil,0; end; local naglowek=mw.text.trim(naglowek); return naglowek,min_rowna; else return nil,0; end; end; function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia) local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.-)</[Hh](%d+)>"); if(not liczba1)then return nil;end; if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then local liczba1=tonumber(liczba1); if(not liczba1)then return nil;end; if((liczba1<1)or(liczba1>6))then return nil;end; return zawartosc,liczba1; end; return nil; end; function p.CzyJestNapisWprowadzeniaTekstu(zawartosc) return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n") or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n") or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$") or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$"); end; function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc) return mw.ustring.match(zawartosc,"^[;%*:#]+") or mw.ustring.match(zawartosc,"\n[;%*:#]+"); end; function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz) local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz); if(czy_naglowek)then return true,true;end; --czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>"); local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false; return czy_naglowek,false; end; function p.WierszHNumer(tekst) local tekst=mw.ustring.gsub(tekst,"(<[Hh](%d+)[^<>]*>)(.-)(</[Hh]%2%s*>)",function(lewy,poziom,tekst,prawy) poziom=tonumber(poziom) or 0; if((poziom>=1)and(poziom<=6))then tekst=mw.ustring.gsub(tekst,"\n"," "); return "\n"..lewy..tekst..prawy.."\n"; end; end); return tekst; end; function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy; local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy; ----- local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ----- local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iter do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then return true; end; end); if(wynik)then return wynik;end; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then return true; --elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then --return true; end; end; return false; end; function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) local szablonowe_modul=require("Module:Szablonowe"); ----- local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iter do if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then return true; end; end; return false; end; function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja) local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$"); if(czy)then local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)"); local tab=mw.text.split(num,"%.",false); if(#tab==1)then if(mw.ustring.match(num,"^%d+$"))then return rozdzial_z_numeracja,""; end; else if(tab[#tab]=="")then tab[#tab]=nil;end; end; local tak=true; for i=1,#tab,1 do tak=tak and mw.ustring.match(tab[i],"^%d+$"); if(not tak)then break;end; end; if(tak)then local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*"); local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*",""); return rozdzial_bez_numeracji,numeracja; end; end; return rozdzial_z_numeracja,""; end; function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu; return tab_kom[nazwa_szablonu]; end; function p.UruchamianieAnalizatoraSpisuRzeczyStrony() return true; end; function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]-'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]-'*)[%s_]*$"))); if(rozdzial)then return rozdzial,true; else local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); if(spis_tresci)then return linia,true; else local rozdzial,main=nil,nil; if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$"); end; if(rozdzial)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then if(mw.ustring.match(rozdzial_main,"^[^']-$"))then if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then return rozdzial,true; end; end; end; else local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$"); if(czy_nie_rozdzial_zerowy)then return linia,false;end; end; return nil; end; end; end; function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end; local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$"); if(not czy_dwukropki)then return false;end; local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$"); if(not czy_miedzy_cudzyslowami)then return false;end; if(not z_parametrami_linkowymi)then return true;end; local szablonowe_modul=require("Module:Szablonowe"); local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()); if(not czy_sa_kody)then return true;end; local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW"))then local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil); if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then return false; end; end; end; return true; end; function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty) local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty'); local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa]; if((atrybuty)and(numer_rozdzialu>=6))then local klasa=atrybuty["class"]; if(klasa)then local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$") or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+") or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+") or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$"); mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6; mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6; numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu; end; end; return numer_rozdzialu; end; function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc) local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$"); return numeracja,rozdzial; end; function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil; local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty'); local parametry_modul=require("Module:Parametry"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local techniczne_modul=require("Module:Techniczne"); local specjalne_modul=require("Module:Specjalne"); local strony_modul=require("Module:Strony"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy; local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local maksymalny_rozmiar_rozdzialu_zerowego=70; return function(linia,tak_ce_spis_tresci) ---- local rozdzial=nil;local numeracja=nil; local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$"); local rozdzial_z_numeracja_nie_przetworzone=nil; ----- ---- if(not poczatek and not rozdzial_z_numeracja)then rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$") if(rozdzial_z_numeracja)then poczatek=""; rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja); rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)",""); rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$",""); rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); else local function LiniaCydzyslow(linia) local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$") if(not linia_wew_cudz)then return false;end; return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$') and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$")))) end; if(LiniaCydzyslow(linia))then rozdzial=linia; poczatek=""; numeracja=""; else local url_iter=mw.ustring.gmatch(linia,"(%S+)"); local czy_rozdzial=false; for url in url_iter do czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url); if(czy_rozdzial)then break; end; end; if(czy_rozdzial)then poczatek=""; numeracja=""; rozdzial=linia; end; end; end; else rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja; rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja); rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)",""); rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$",""); rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); end; local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst; local nazwa,zawartosc,atrybuty; if(rozdzial)then tekst=rozdzial;else tekst=linia;end; ---- local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then return nil; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then return true; end; end); if(wynik)then return nil;end; end; end; return true; end; local FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu=function(wartosc) if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end; if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end; numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc); if(rozdzial)then local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial); if(not wynik)then numeracja=nil;rozdzial=nil; return nil; end; end; end; local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(czy_ce)then local wartosc=tabela_parametrow_szablonu[czy_ce]; if(wartosc)then return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(wartosc); end; return nil; end; end; local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty) if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(zawartosc); end; end; return nil; end; ---- local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) --- local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(czy_ce)then ze_specialnymi_obiektami=true; czy_centrowanie=true; NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow); --if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; return true; elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then ze_specialnymi_obiektami=true; if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; return true; end; end); if(wynik)then return;end; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; ze_specialnymi_obiektami=true; return nil; elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; ze_specialnymi_obiektami=true; return nil; elseif(obiekt=="ZNACZNIK")then nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if(nazwa=="center")then ze_specialnymi_obiektami=true; czy_centrowanie=true; NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty); --if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; return nil; elseif(znaczniki_wprowadzenia_tekstu[nazwa])then ze_specialnymi_obiektami=true; czy_znaczniki_hn=true; NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty); return nil; end; end; end; return szablon; end); for szablon,obiekt,kod in iter do end; rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil; poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil; numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil; if(not ze_specialnymi_obiektami)then local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then return linia,rozdzial,0,nil,numeracja; else return nil; end; else local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek); local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja); if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then return nil; elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then return linia,rozdzial,0,nil,numeracja; else return nil; end; end; else return nil; end; elseif(czy_centrowanie)then if(tak_ce_spis_tresci)then if((rozdzial)and(numeracja))then if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then return nil,nil,nil,nil; end; return linia,rozdzial,2,nil,numeracja,true; end; end; return nil; elseif(czy_znaczniki_hn)then if((rozdzial)and(numeracja))then if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then return nil,nil,nil,nil; end; local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); return linia,rozdzial,numer_rozdzialu,nil,numeracja; end; elseif(rozdzial)then local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja); local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial); if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then return nil; end; if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil; if(not czy_pominac_ten_rozdzial_jako_rozdzial)then if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; else return nil; end; else return nil; end; else local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek); if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then return nil; else local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil; if(not czy_pominac_ten_rozdzial_jako_rozdzial)then if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; else return nil; end; else return nil; end; end; end; else return nil; end; return nil; end; end; function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame) local strona=frame.args[1]; local id_rozdzialu1=frame.args[2] or ""; local id_rozdzialu2=frame.args[3] or ""; strona=frame:preprocess(strona); local title=mw.title.makeTitle('',strona); if((not title)or(not title.exists))then return nil; end; local tekst=title:getContent(); if(not tekst)then return nil;end; return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); end; function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst) tekst=mw.ustring.gsub(tekst,"^[%s_]+",""); tekst=mw.ustring.gsub(tekst,"[%s_]+$",""); tekst=mw.ustring.gsub(tekst,"[%s_]+","_"); return tekst; end; function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame) local strona=frame.args[1]; local id_rozdzialu=frame.args[2] or ""; strona=frame:preprocess(strona); local title=mw.title.makeTitle('',strona); if((not title)or(not title.exists))then return nil; end; local tekst=title:getContent(); if(not tekst)then return nil;end; id_rozdzialu=frame:preprocess(id_rozdzialu); local specjalne_modul=require("Module:Specjalne"); id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu); id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu); local html_modul=require("Module:Html"); id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu); tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>",""); tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1"); --tekst=mw.ustring.gsub(tekst,"\n\n","\n\n"); tekst=p.WierszHNumer(tekst); local szeregi_modul=require("Module:Szeregi"); local iter=szeregi_modul.IteratorLiniiTekstu(tekst); local tab_rozdzialy={}; local specjalne_modul=require("Module:Specjalne"); for wiersz in iter do local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz); if(czy_naglowek)then local nazwa_rozdzialu,poziom_rozdzialu; if(czy_naglowek_wiki)then nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz); else nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz); end; nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu); local nazwa_rozdzialu_aktualna=nazwa_rozdzialu; nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu); nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu); nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu); local c=1; for i=1,#tab_rozdzialy,1 do if(tab_rozdzialy[i]==nazwa_rozdzialu)then c=c+1; end; end; if(c>1)then nazwa_rozdzialu=nazwa_rozdzialu.."_"..c; end; table.insert(tab_rozdzialy,nazwa_rozdzialu); if(id_rozdzialu==nazwa_rozdzialu)then return nazwa_rozdzialu_aktualna; end; end; end; return nil; end; function p.NumerSekcjiStrony(frame) local strona=frame.args[1]; local id_rozdzialu=frame.args[2] or ""; strona=frame:preprocess(strona); local title=mw.title.makeTitle('',strona); if((not title)or(not title.exists))then return nil; end; local tekst=title:getContent(); if(not tekst)then return nil;end; id_rozdzialu=frame:preprocess(id_rozdzialu); local specjalne_modul=require("Module:Specjalne"); id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu); id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu); local html_modul=require("Module:Html"); id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu); tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>",""); tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1"); --tekst=mw.ustring.gsub(tekst,"\n\n","\n\n"); tekst=p.WierszHNumer(tekst); local szeregi_modul=require("Module:Szeregi"); local iter=szeregi_modul.IteratorLiniiTekstu(tekst); local tab_rozdzialy={}; local ile=1; for wiersz in iter do local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz); if(czy_naglowek)then local nazwa_rozdzialu,poziom_rozdzialu; if(czy_naglowek_wiki)then nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz); else nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz); end; nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu); nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu); nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu); nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu); local c=1; for i=1,#tab_rozdzialy,1 do if(tab_rozdzialy[i]==nazwa_rozdzialu)then c=c+1; end; end; if(c>1)then nazwa_rozdzialu=nazwa_rozdzialu.."_"..c; end; table.insert(tab_rozdzialy,nazwa_rozdzialu); if(id_rozdzialu==nazwa_rozdzialu)then return ile; end; ile=ile+1; end end; return nil; end; function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2) local frame=mw.getCurrentFrame(); local specjalne_modul=require("Module:Specjalne"); local html_modul=require("Module:Html"); id_rozdzialu1=frame:preprocess(id_rozdzialu1); id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1); id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1); id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1); id_rozdzialu2=frame:preprocess(id_rozdzialu2); id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2); id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2); id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2); tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>",""); tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1"); --tekst=mw.ustring.gsub(tekst,"\n\n","\n\n"); tekst=p.WierszHNumer(tekst); local szeregi_modul=require("Module:Szeregi"); local iter=szeregi_modul.IteratorLiniiTekstu(tekst); local tab_rozdzialy={}; local str="" local nazwa_rozdzialu_aktualna; local poziom_rozdzialu_aktualny; for wiersz in iter do local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz); if(czy_naglowek)then local nazwa_rozdzialu,poziom_rozdzialu; if(czy_naglowek_wiki)then nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz); else nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz); end; nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu); nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu); nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu); nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu); local c=1; for i=1,#tab_rozdzialy,1 do if(tab_rozdzialy[i]==nazwa_rozdzialu)then c=c+1; end; end; if(c>1)then nazwa_rozdzialu=nazwa_rozdzialu.."_"..c; end; table.insert(tab_rozdzialy,nazwa_rozdzialu); if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1)) and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then return str; end; if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then nazwa_rozdzialu_aktualna=nazwa_rozdzialu; poziom_rozdzialu_aktualny=poziom_rozdzialu; str=""; elseif(id_rozdzialu1=="")then nazwa_rozdzialu_aktualna=""; poziom_rozdzialu_aktualny=0; if(id_rozdzialu2=="")then return str; elseif(nazwa_rozdzialu==id_rozdzialu2)then return str; else str=(str~="")and (str.."\n"..wiersz) or wiersz; end; else str=(str~="")and (str.."\n"..wiersz) or wiersz; end; else str=(str~="")and (str.."\n"..wiersz) or wiersz; end; end; if((id_rozdzialu1)and(id_rozdzialu1==""))then return str; elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then return str; end; return ""; end; function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy; end; end; end; local szablonowe_modul=require("Module:Szablonowe"); ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu]; if(not ktore)then return;end; local tab=mw.text.split(tostring(ktore),"%s*;%s*",false); local wynik=""; for _,num in pairs(tab)do local numer_parametru=tonumber(num) or num; for parametr,wartosc in pairs(tabela_parametrow_szablonu)do if(parametr==numer_parametru)then wynik=(wynik or "")..wartosc; end; end; end; return wynik; end); if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik; end; return wynik; end; function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy; end; end; end; local szablonowe_modul=require("Module:Szablonowe"); local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym; local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu]; if(dodatek)then local techniczne_modul=require("Module:Techniczne"); for name,value in pairs(tabela_parametrow_szablonu)do local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name); local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value); dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value); end; return dodatek; end; end); if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik; end; return wynik; end; function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) return "\n\n "; end,nil,nil, function(szablon,obiekt,kod,poziom_iteracji) if(poziom_iteracji==0)then if(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="br")or(nazwa=="hr"))then return true; end; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then return true; end; end); if(wynik)then return wynik;end; end; end; return nil; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst; end; function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE) local CzySpecjalnaLinia=function(linia) local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-"); if(not czy_specjalna_linia)then if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then return true; end; end; return czy_specjalna_linia; end; ---- local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local CzyLiniaZeSpecjalnymiSzablonami=function(linia) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_obiektow_strony_dany_modul_uzyskany); for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then return true; end; end); if(wynik)then return wynik;end; end; end; return nil; end; ---- --tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony); ---- local tab_linie_tekstu=mw.text.split(tekst,"\n"); if(#tab_linie_tekstu==0)then return "";end; local tekst_nowy=tab_linie_tekstu[1]; local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy); if(not czy_linia_poprz)then tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE); end; for i=2,#tab_linie_tekstu,1 do local linia=tab_linie_tekstu[i]; local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia); if(not aktualna_specjalna_linia)then linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE); end; if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then --local czy_wprowadzenie=mw.ustring.match(linia,"^>") local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$"); tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia; else tekst_nowy=tekst_nowy.."\n"..linia; end; czy_linia_poprz=aktualna_specjalna_linia; end; return tekst_nowy; end; function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) local nazwy_modul=require("Module:Nazwy"); tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {}; tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {}; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local szeregi_modul=require("Module:Szeregi"); local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci) and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) or nil; local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji) local tab_obiekt=tab_analiza[obiekt]; if(not tab_obiekt)then return;end; for _,wartosc in pairs(tab_obiekt)do local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(element_wartosc)then element_wartosc[kod]=nil; end; end; end; local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji) tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; end; --local tab_nazwa_spisow_przekierowaniowych={}; if(czy_dalej_rozwazac_zakodowane)then ---- local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego; local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe; local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; ---- local function UsuwanieNowychLiniiZnacznikowe(szablon) local tak=nil; szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ----- if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then if(poziom_iteracji==0)then tak=true;end; return " "; end; end); if(wynik)then return wynik,nil,true;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="br")or(nazwa=="hr"))then if(poziom_iteracji==0)then tak=true;end; return " ",nil,true; end; end; return nil,true; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return szablon,tak; end; local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod) local czy_tak=false; local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(czy_ce)then local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce]; if(szablon_spis_tresci_zawartosc)then czy_tak=czy_tak or true; return szablon_spis_tresci_zawartosc; end; end; return nil; end); if(wynik)then return wynik,nil,true;end; return nil,true; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then czy_tak=czy_tak or true; return zawartosc,nil,true; end; end; end; return nil,true; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return szablon,czy_tak; end; local Modyfikacja=function(szablon,obiekt,kod) local czy_tak=false; local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod); czy_tak=czy_tak or czy_tak1; local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon); czy_tak=czy_tak or czy_tak2; local szablon,ile=mw.ustring.gsub(szablon,"\n"," "); czy_tak=czy_tak or (ile>0); return szablon,czy_tak; end; local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu=parametr1; local nazwa_szablonu=parametr2; local tabela_modyfikatorow=parametr3; if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod); if(not czy_tak)then return nil,true;end; return wynik,true; end; elseif(obiekt=="ZNACZNIK")then local nazwa=parametr1; local zawartosc=parametr2; local tab_atrybuty=parametr3; if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod); if(not czy_tak)then return nil,true;end; return wynik,true; end; end; end; ---- local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); --- --local tab_nazwa_spisow_przekierowaniowych={}; --- local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie) local spacja=" "; local tab_spacja={ ["nbsp"]=spacja, ["#32"]=spacja, ["#x20"]=spacja, }; komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja); local komorka_stara=komorka; if(not nie_trimowanie)then komorka=mw.text.trim(komorka); end; if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end; return ((not nie_trimowanie)and ("\n\n"..komorka.."\n") or komorka); end; ---- local function ZamienNaKody(zawartosc,czy_szablon) local function Linie(wzor) zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b) return "&#"..mw.ustring.byte(a)..";"..(b or ""); end); end; if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then Linie("^([=%*#:;])"); end; local len=mw.ustring.len(zawartosc); if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then Linie("([=])([^%S\n]*)$"); end; return zawartosc; end; tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3; local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(numer_parametru)then local parametr=tabela_parametrow_szablonu[numer_parametru]; if(parametr)then local czy_modyfikacja=false; szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="div")then if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then czy_modyfikacja=true; return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or ""; end; end; end; return nil,true; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); if(czy_modyfikacja)then return szablon; end; end; end; local function AnalizaSzablonu(szablon) local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end; local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu]; if(czy_szablony_bez_generowania_napisowego)then return "";end; if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end; --if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end; end; local szablon2=AnalizaSzablonu(szablon); if(szablon2)then return szablon2;end; local czy_center; szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2; if(szablon)then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil; end; end; local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(szablon_ce)then local zawartosc=tabela_parametrow_szablonu[szablon_ce]; if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then return zawartosc,tabela_parametrow_szablonu; end; end; return nil,tabela_parametrow_szablonu; end); if(wynik)then return wynik;end; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; return nil; elseif(czy_center)then local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(szablon_ce)then local zawartosc=tabela_parametrow_szablonu[szablon_ce]; if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then return zawartosc; else return nil; end; else return nil; end; end; local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu]; if(znacznik_numer)then local parametr=tabela_parametrow_szablonu[znacznik_numer]; if(parametr)then return ZamienNaKody(parametr,true); end; end; end; local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow); if(wynik)then return wynik,nil,true;end; return nil,true; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3; if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then local fun=function() if(nazwa~="div")then return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or ""; elseif((zawartosc)and(zawartosc~=""))then if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then local ile1;local ile2; zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s) if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end; return "\n"; end); zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s) if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end; return ""; end); return ZamienNaKody(zawartosc,false); else return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or ""; end; else return ""; end; end; return fun,nil,true; end; else if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then return zawartosc,nil,true; end; local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty); if(szablon)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100]; if(tablica_danych_parametrow_szablonu_strony_numer)then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; return nil,true; elseif(obiekt=="INNEPRE")then if(mw.ustring.match(szablon,"^%s*$"))then return "",nil,true; end; return nil,true; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then local tak=false; szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then return " "; else local nazwa_zmiennej=znaczniki_szablonowe[nazwa_szablonu]; if(nazwa_zmiennej)then local zawartosc=tabela_parametrow_szablonu[nazwa_zmiennej]; return zawartosc or " "; end; end; end); if(wynik)then return wynik,nil,true;end; elseif(obiekt=="ZNACZNIK")then tak=true; local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3; if((nazwa=="br")or(nazwa=="hr"))then return " ",nil,true; else return zawartosc or "",nil,true; end; end; return nil,true; end); if(tak)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; end; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true); if(not czy_element_spisu)then return "",nil,true;end; elseif(obiekt=="WIKITABELA")then szablon=mw.ustring.match(szablon,"^{|(.-)|}$"); szablon=mw.ustring.gsub(szablon,"^[^\n]+",""); --szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end); szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end); szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n"); szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end) szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end); szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end); return szablon,nil,true; end; return nil,true; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial) tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia) local linia_nie_nil=mw.ustring.match(linia,wzor); if(linia_nie_nil)then local tak=nil; local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then tak=true; return " "; end; local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(szablon_ce)then local tekst=tabela_parametrow_szablonu[szablon_ce]; if(tekst)then tak=true; return tekst; end; end; end); if(wynik)then return wynik,nil,true;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="br")or(nazwa=="hr"))then tak=true; return " ",nil,true; elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then tak=true; return zawartosc or "",nil,true; end; elseif(obiekt=="PRE")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); if(czy_dodatni_rozdzial)then local zawartosc=mw.ustring.gsub(zawartosc,"\n"," "); tak=true; return zawartosc,nil,true; else tak=true; return zawartosc,nil,true; end; else tak=true; return "",nil,true; end; elseif(obiekt=="ŹRÓDŁO")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); if(czy_dodatni_rozdzial)then local zawartosc=mw.ustring.gsub(zawartosc,"\n"," "); tak=true; return zawartosc,nil,true; else tak=true; return zawartosc,nil,true; end; else tak=true; return "",nil,true; end; elseif(obiekt=="NOWIKI")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); local zawartosc=mw.ustring.gsub(zawartosc,"\n"," "); tak=true; return zawartosc,nil,true; else tak=true; return "",nil,true; end; end; return nil,true; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return linia_tekst; else return nil; end; end); end; ----- LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true); LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false); tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n "; else local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(numer_parametru)then local parametr=tabela_parametrow_szablonu[numer_parametru]; if(parametr)then local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr); if(naglowek)then local obiekt_hnumer="ZNACZNIK"; local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1; return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer; end; end; end; end; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n "; end; elseif(obiekt=="INNEPRE")then return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n"; elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n "; end; end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); ----- end; tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->",""); local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy; tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy) return tab_magiczne_derektywy[derektywy] and "" or nil; end); tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2"); tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2"); --tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n"); if(czy_dalej_rozwazac_zakodowane)then ---- tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE); tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu; end; --mw.log( tekst_rozwiniety_calego_artykulu) --local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n"); local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu); local naglowek_aktualnego_rozdzialu; local linia_naglowka_aktualnego_rozdzialu; local poziom_aktualnego_rozdzialu; local poczatek_aktualnego_rozdzialu; local numeracja_aktualnego_rozdzialu; local czy_rozdzial_aktualny_centrowany; local czy_koniec=false; ---- local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); local czy_ce_spis_tresci=nil; ---- local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ----- local tak_ce_spis_tresci=nil; local m=0; local function Wystepowanie(linia,funkcja1,funkcja2) local czy_znaleziono_okladka=false; local function RozwazajLinie(szablon,obiekt,kod) if(szablon)then local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]); if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then return 1; elseif(czy_okladka)then czy_znaleziono_okladka=true; end; end; else return 0; end; end; end; local function RozwazajLinieZnacznikowe(zawartosc) local wartosc; local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) local function CenterZnacznikLinia(szablon,obiekt,kod) wartosc=RozwazajLinie(szablon,obiekt,kod); if(not wartosc)then return;end; if(wartosc==1)then return nil;end; return szablon,tekst; end; if(obiekt=="SZABLON")then local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod); return szablon,tekst; end); return szablon,tekst; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod); return szablon,tekst; end; end); for szablon,obiekt,kod in iter do end; return wartosc; end; local szablon_spis_tresci; local function spis_tresci(wystepowanie_linkow,hn_number) local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iter do local function Spis(szablon,obiekt,kod) local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then tak_ce_spis_tresci=hn_number; szablon_spis_tresci=wystepowanie_linkow; return 1; end; else return 0; end; end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local wynik=Spis(szablon,obiekt,kod); if(wynik)then return wynik;end; end); if(wynik)then return wynik;end; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then local wynik=Spis(szablon,obiekt,kod); if(wynik)then return wynik;end; end; end; wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow; wystepowanie_linkow=mw.text.trim(wystepowanie_linkow); local czy_ce=jakie_spisy_tresci[wystepowanie_linkow]; if(czy_ce)then tak_ce_spis_tresci=hn_number; szablon_spis_tresci=wystepowanie_linkow; return 1; end; end; local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$"); local tak=nil; if(czy_dalej_rozwazac_zakodowane)then if(wystepowanie_linkow)then local czy_rozdzial=nil;local wartosc=nil; local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK"); if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then local podrecznik=nil; if(czy_szablon)then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ----- local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(czy_ce)then local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce]; if(szablon_spis_tresci_zawartosc)then szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$"); wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true); else wartosc=RozwazajLinie(szablon,obiekt,kod); end; else wartosc=RozwazajLinie(szablon,obiekt,kod); if(wartosc)then podrecznik=true;else podrecznik=false;end; end; end); elseif(czy_znacznik)then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if(nazwa=="center")then szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$"); wartosc=spis_tresci(szablon_spis_tresci,true); elseif(znaczniki_wprowadzenia_tekstu[nazwa])then szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$"); local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty) wartosc=spis_tresci(szablon_spis_tresci,hn_number); else wartosc=RozwazajLinieZnacznikowe(zawartosc); end; end; else wartosc=RozwazajLinie(szablon,obiekt,kod); if(wartosc)then podrecznik=true;else podrecznik=false;end; end; if(podrecznik==true)then if(not czy_rozdzial)then if(wartosc==1)then local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod))) and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>")) and (mw.ustring.match(tekst,"^[^%.]*%s*$")); if(not wystepowanie_linku_lub_szablonu)then return nil;end; czy_rozdzial=true; elseif(wartosc==0)then local ile; tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),""); return "", ((ile>0) and tekst or nil); end; end; elseif(podrecznik==false)then if(not wartosc)then if(czy_znaleziono_okladka)then local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(not czy_nie_uwzgledniac_linii)then local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),""); return "", ((ile>0) and tekst or nil); else czy_znaleziono_okladka=false; end; else local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),""); return "", ((ile>0) and tekst or nil); end; end; end; if(not wartosc)then return;end; tak=tak or (wartosc==1); if(tak)then return;end; return szablon,tekst; else local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),""); return "", ((ile>0) and tekst or nil); end; end); for szablon,obiekt,kod in iter do end; end; end; if(tak)then funkcja1(szablon_spis_tresci); else funkcja2(); end; end return function() local tab_str={}; local linia; local function IterMain() for linia in iter_main do local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany; --------------------------------------- nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"); if(nazwa_rozdzialu) then nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu); end; if(not nazwa_rozdzialu)then if(czy_inne_rozdzialy_analizowac)then if(not czy_w_spisie_tresci)then Wystepowanie(linia,function(szablon_spis_tresci) if(not tak_ce_spis_tresci)then nazwa_rozdzialu="Spis treści"; poziom_rozdzialu=nil; table.insert(tab_str,linia); else if(szablon_spis_tresci)then local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci); if((numeracja)and(rozdzial))then numeracja_rozdzialu=numeracja; nazwa_rozdzialu=rozdzial; else nazwa_rozdzialu=szablon_spis_tresci; numeracja_rozdzialu=nil; end; else nazwa_rozdzialu="Spis treści"; numeracja_rozdzialu=nil; end; local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci); poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2; czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false; poczatek_rozdzialu=nil; --str=""; end; end,function() nazwa_rozdzialu=nil; end); end; if(not nazwa_rozdzialu)then local linia_temp; linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); end; else nazwa_rozdzialu=nil; end; end; if(nazwa_rozdzialu)then czy_w_spisie_tresci=true; if(not naglowek_aktualnego_rozdzialu)then naglowek_aktualnego_rozdzialu=nazwa_rozdzialu; linia_naglowka_aktualnego_rozdzialu=linia; poziom_aktualnego_rozdzialu=poziom_rozdzialu; poczatek_aktualnego_rozdzialu=poczatek_rozdzialu; numeracja_aktualnego_rozdzialu=numeracja_rozdzialu; czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany; else ---------------------------------------------- local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu; local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu; local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu; local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu; local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu; local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany; ---------------------------------------------- naglowek_aktualnego_rozdzialu=nazwa_rozdzialu; linia_naglowka_aktualnego_rozdzialu=linia; poziom_aktualnego_rozdzialu=poziom_rozdzialu; poczatek_aktualnego_rozdzialu=poczatek_rozdzialu; numeracja_aktualnego_rozdzialu=numeracja_rozdzialu; czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany; local str=table.concat(tab_str,"\n"); if(not __FUNKCJA2)then naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or naglowek_posredni_aktualnego_rozdzialu ) or nil; str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or str) or nil; elseif(czy_dalej_rozwazac_zakodowane)then naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil; str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil; end; --linia_poprz=nil; m=m+1; return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany; end; else if(naglowek_aktualnego_rozdzialu)then table.insert(tab_str,linia); end; --linia_poprz=linia; end; end; if(czy_koniec)then return nil;end; czy_koniec=true; --- local str=table.concat(tab_str,"\n"); -- if(not __FUNKCJA2)then naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul) or naglowek_aktualnego_rozdzialu ) or nil; str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil; elseif(czy_dalej_rozwazac_zakodowane)then naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil; str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil; end; --linia_nast=nil;linia_poprz=nil; m=m+1; return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany; end; ---- local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain(); return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany; end,tekst_rozwiniety_calego_artykulu; end; return p; maa391dis8ky1ern4bm5v5igqiyd4am 557780 557777 2026-09-27T13:04:16Z Persino 2851 557780 Scribunto text/plain local p={}; function p.NapisWprowadzeniaTekstu(rozdzial,poziom,id) local naglowek; poziom=poziom or 1; poziom=(poziom>0)and poziom or 1; if(poziom<=6)then local str_poziom=mw.ustring.rep("=",poziom); naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n"; else naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n"; end; return naglowek; end; function p.NapisWprowadzeniaTekstuHn(rozdzial,poziom,id) local naglowek; poziom=poziom or 1; poziom=(poziom>0)and poziom or 1; if(poziom<=6)then local str_poziom=mw.ustring.rep("=",poziom); naglowek="\n<h"..poziom.." "..(id and ("id=\""..id.."\"") or "")..">"..rozdzial.."</h"..poziom..">\n"; else naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n"; end; return naglowek; end; function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod) if(mw.ustring.match(zawartosc,"\n"))then return false;end; local szablonowe_modul=require("Module:Szablonowe"); local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod); tekst='\n'..tekst..'\n'; if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end; if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end; return false; end; function p.NapisWprowadzeniaTekstuHNumer(parametr) local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr); if(not naglowek)then return nil;end; if(poziom<=6)then return "<h"..poziom..">"..naglowek.."</h"..poziom..">"; else return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>"; end; end; function p.PodajNapisPoziomuWprowadzeniaTekstu(linia) if(mw.ustring.match(linia,"^%s*=*%s*$"))then return nil,0; end; local rowna_lewy=mw.ustring.match(linia,"^(=+)"); local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$"); if((rowna_lewy)and(rowna_prawy))then local min_rowna=math.min(#rowna_lewy,#rowna_prawy); local str_min_rowna=mw.ustring.rep("=",min_rowna); local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$"); if(not naglowek)then return nil,0; end; local naglowek=mw.text.trim(naglowek); return naglowek,min_rowna; else return nil,0; end; end; function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia) local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.-)</[Hh](%d+)>"); if(not liczba1)then return nil;end; if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then local liczba1=tonumber(liczba1); if(not liczba1)then return nil;end; if((liczba1<1)or(liczba1>6))then return nil;end; return zawartosc,liczba1; end; return nil; end; function p.CzyJestNapisWprowadzeniaTekstu(zawartosc) return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n") or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n") or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$") or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$"); end; function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc) return mw.ustring.match(zawartosc,"^[;%*:#]+") or mw.ustring.match(zawartosc,"\n[;%*:#]+"); end; function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz) local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz); if(czy_naglowek)then return true,true;end; --czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>"); local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false; return czy_naglowek,false; end; function p.WierszHNumer(tekst) local tekst=mw.ustring.gsub(tekst,"(<[Hh](%d+)[^<>]*>)(.-)(</[Hh]%2%s*>)",function(lewy,poziom,tekst,prawy) poziom=tonumber(poziom) or 0; if((poziom>=1)and(poziom<=6))then tekst=mw.ustring.gsub(tekst,"\n"," "); return "\n"..lewy..tekst..prawy.."\n"; end; end); return tekst; end; function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy; local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy; ----- local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ----- local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iter do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then return true; end; end); if(wynik)then return wynik;end; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then return true; --elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then --return true; end; end; return false; end; function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) local szablonowe_modul=require("Module:Szablonowe"); ----- local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iter do if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then return true; end; end; return false; end; function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja) local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$"); if(czy)then local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)"); local tab=mw.text.split(num,"%.",false); if(#tab==1)then if(mw.ustring.match(num,"^%d+$"))then return rozdzial_z_numeracja,""; end; else if(tab[#tab]=="")then tab[#tab]=nil;end; end; local tak=true; for i=1,#tab,1 do tak=tak and mw.ustring.match(tab[i],"^%d+$"); if(not tak)then break;end; end; if(tak)then local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*"); local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*",""); return rozdzial_bez_numeracji,numeracja; end; end; return rozdzial_z_numeracja,""; end; function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu; return tab_kom[nazwa_szablonu]; end; function p.UruchamianieAnalizatoraSpisuRzeczyStrony() return true; end; function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]-'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]-'*)[%s_]*$"))); if(rozdzial)then return rozdzial,true; else local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); if(spis_tresci)then return linia,true; else local rozdzial,main=nil,nil; if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$"); end; if(rozdzial)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then if(mw.ustring.match(rozdzial_main,"^[^']-$"))then if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then return rozdzial,true; end; end; end; else local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$"); if(czy_nie_rozdzial_zerowy)then return linia,false;end; end; return nil; end; end; end; function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end; local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$"); if(not czy_dwukropki)then return false;end; local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$"); if(not czy_miedzy_cudzyslowami)then return false;end; if(not z_parametrami_linkowymi)then return true;end; local szablonowe_modul=require("Module:Szablonowe"); local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()); if(not czy_sa_kody)then return true;end; local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW"))then local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil); if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then return false; end; end; end; return true; end; function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty) local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty'); local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa]; if((atrybuty)and(numer_rozdzialu>=6))then local klasa=atrybuty["class"]; if(klasa)then local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$") or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+") or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+") or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$"); mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6; mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6; numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu; end; end; return numer_rozdzialu; end; function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc) local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$"); return numeracja,rozdzial; end; function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil; local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty'); local parametry_modul=require("Module:Parametry"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local techniczne_modul=require("Module:Techniczne"); local specjalne_modul=require("Module:Specjalne"); local strony_modul=require("Module:Strony"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy; local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local maksymalny_rozmiar_rozdzialu_zerowego=70; return function(linia,tak_ce_spis_tresci) ---- local rozdzial=nil;local numeracja=nil; local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$"); local rozdzial_z_numeracja_nie_przetworzone=nil; ----- ---- if(not poczatek and not rozdzial_z_numeracja)then rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$") if(rozdzial_z_numeracja)then poczatek=""; rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja); rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)",""); rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$",""); rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); else local function LiniaCydzyslow(linia) local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$") if(not linia_wew_cudz)then return false;end; return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$') and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$")))) end; if(LiniaCydzyslow(linia))then rozdzial=linia; poczatek=""; numeracja=""; else local url_iter=mw.ustring.gmatch(linia,"(%S+)"); local czy_rozdzial=false; for url in url_iter do czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url); if(czy_rozdzial)then break; end; end; if(czy_rozdzial)then poczatek=""; numeracja=""; rozdzial=linia; end; end; end; else rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja; rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja); rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)",""); rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$",""); rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); end; local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst; local nazwa,zawartosc,atrybuty; if(rozdzial)then tekst=rozdzial;else tekst=linia;end; ---- local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then return nil; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then return true; end; end); if(wynik)then return nil;end; end; end; return true; end; local FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu=function(wartosc) if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end; if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end; numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc); if(rozdzial)then local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial); if(not wynik)then numeracja=nil;rozdzial=nil; return nil; end; end; end; local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(czy_ce)then local wartosc=tabela_parametrow_szablonu[czy_ce]; if(wartosc)then return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(wartosc); end; return nil; end; end; local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty) if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(zawartosc); end; end; return nil; end; ---- local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) --- local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(czy_ce)then ze_specialnymi_obiektami=true; czy_centrowanie=true; NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow); --if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; return true; elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then ze_specialnymi_obiektami=true; if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; return true; end; end); if(wynik)then return;end; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; ze_specialnymi_obiektami=true; return nil; elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; ze_specialnymi_obiektami=true; return nil; elseif(obiekt=="ZNACZNIK")then nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if(nazwa=="center")then ze_specialnymi_obiektami=true; czy_centrowanie=true; NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty); --if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; return nil; elseif(znaczniki_wprowadzenia_tekstu[nazwa])then ze_specialnymi_obiektami=true; czy_znaczniki_hn=true; NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty); return nil; end; end; end; return szablon; end); for szablon,obiekt,kod in iter do end; rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil; poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil; numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil; if(not ze_specialnymi_obiektami)then local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then return linia,rozdzial,0,nil,numeracja; else return nil; end; else local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek); local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja); if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then return nil; elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then return linia,rozdzial,0,nil,numeracja; else return nil; end; end; else return nil; end; elseif(czy_centrowanie)then if(tak_ce_spis_tresci)then if((rozdzial)and(numeracja))then if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then return nil,nil,nil,nil; end; return linia,rozdzial,2,nil,numeracja,true; end; end; return nil; elseif(czy_znaczniki_hn)then if((rozdzial)and(numeracja))then if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then return nil,nil,nil,nil; end; local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); return linia,rozdzial,numer_rozdzialu,nil,numeracja; end; elseif(rozdzial)then local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja); local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial); if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then return nil; end; if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil; if(not czy_pominac_ten_rozdzial_jako_rozdzial)then if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; else return nil; end; else return nil; end; else local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek); if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then return nil; else local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil; if(not czy_pominac_ten_rozdzial_jako_rozdzial)then if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; else return nil; end; else return nil; end; end; end; else return nil; end; return nil; end; end; function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame) local strona=frame.args[1]; local id_rozdzialu1=frame.args[2] or ""; local id_rozdzialu2=frame.args[3] or ""; strona=frame:preprocess(strona); local title=mw.title.makeTitle('',strona); if((not title)or(not title.exists))then return nil; end; local tekst=title:getContent(); if(not tekst)then return nil;end; return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); end; function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst) tekst=mw.ustring.gsub(tekst,"^[%s_]+",""); tekst=mw.ustring.gsub(tekst,"[%s_]+$",""); tekst=mw.ustring.gsub(tekst,"[%s_]+","_"); return tekst; end; function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame) local strona=frame.args[1]; local id_rozdzialu=frame.args[2] or ""; strona=frame:preprocess(strona); local title=mw.title.makeTitle('',strona); if((not title)or(not title.exists))then return nil; end; local tekst=title:getContent(); if(not tekst)then return nil;end; id_rozdzialu=frame:preprocess(id_rozdzialu); local specjalne_modul=require("Module:Specjalne"); id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu); id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu); local html_modul=require("Module:Html"); id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu); tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>",""); tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1"); --tekst=mw.ustring.gsub(tekst,"\n\n","\n\n"); tekst=p.WierszHNumer(tekst); local szeregi_modul=require("Module:Szeregi"); local iter=szeregi_modul.IteratorLiniiTekstu(tekst); local tab_rozdzialy={}; local specjalne_modul=require("Module:Specjalne"); for wiersz in iter do local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz); if(czy_naglowek)then local nazwa_rozdzialu,poziom_rozdzialu; if(czy_naglowek_wiki)then nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz); else nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz); end; nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu); local nazwa_rozdzialu_aktualna=nazwa_rozdzialu; nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu); nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu); nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu); local c=1; for i=1,#tab_rozdzialy,1 do if(tab_rozdzialy[i]==nazwa_rozdzialu)then c=c+1; end; end; if(c>1)then nazwa_rozdzialu=nazwa_rozdzialu.."_"..c; end; table.insert(tab_rozdzialy,nazwa_rozdzialu); if(id_rozdzialu==nazwa_rozdzialu)then return nazwa_rozdzialu_aktualna; end; end; end; return nil; end; function p.NumerSekcjiStrony(frame) local strona=frame.args[1]; local id_rozdzialu=frame.args[2] or ""; strona=frame:preprocess(strona); local title=mw.title.makeTitle('',strona); if((not title)or(not title.exists))then return nil; end; local tekst=title:getContent(); if(not tekst)then return nil;end; id_rozdzialu=frame:preprocess(id_rozdzialu); local specjalne_modul=require("Module:Specjalne"); id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu); id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu); local html_modul=require("Module:Html"); id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu); tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>",""); tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1"); --tekst=mw.ustring.gsub(tekst,"\n\n","\n\n"); tekst=p.WierszHNumer(tekst); local szeregi_modul=require("Module:Szeregi"); local iter=szeregi_modul.IteratorLiniiTekstu(tekst); local tab_rozdzialy={}; local ile=1; for wiersz in iter do local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz); if(czy_naglowek)then local nazwa_rozdzialu,poziom_rozdzialu; if(czy_naglowek_wiki)then nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz); else nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz); end; nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu); nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu); nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu); nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu); local c=1; for i=1,#tab_rozdzialy,1 do if(tab_rozdzialy[i]==nazwa_rozdzialu)then c=c+1; end; end; if(c>1)then nazwa_rozdzialu=nazwa_rozdzialu.."_"..c; end; table.insert(tab_rozdzialy,nazwa_rozdzialu); if(id_rozdzialu==nazwa_rozdzialu)then return ile; end; ile=ile+1; end end; return nil; end; function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2) local frame=mw.getCurrentFrame(); local specjalne_modul=require("Module:Specjalne"); local html_modul=require("Module:Html"); id_rozdzialu1=frame:preprocess(id_rozdzialu1); id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1); id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1); id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1); id_rozdzialu2=frame:preprocess(id_rozdzialu2); id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2); id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2); id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2); tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>",""); tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1"); --tekst=mw.ustring.gsub(tekst,"\n\n","\n\n"); tekst=p.WierszHNumer(tekst); local szeregi_modul=require("Module:Szeregi"); local iter=szeregi_modul.IteratorLiniiTekstu(tekst); local tab_rozdzialy={}; local str="" local nazwa_rozdzialu_aktualna; local poziom_rozdzialu_aktualny; for wiersz in iter do local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz); if(czy_naglowek)then local nazwa_rozdzialu,poziom_rozdzialu; if(czy_naglowek_wiki)then nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz); else nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz); end; nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu); nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu); nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu); nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu); local c=1; for i=1,#tab_rozdzialy,1 do if(tab_rozdzialy[i]==nazwa_rozdzialu)then c=c+1; end; end; if(c>1)then nazwa_rozdzialu=nazwa_rozdzialu.."_"..c; end; table.insert(tab_rozdzialy,nazwa_rozdzialu); if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1)) and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then return str; end; if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then nazwa_rozdzialu_aktualna=nazwa_rozdzialu; poziom_rozdzialu_aktualny=poziom_rozdzialu; str=""; elseif(id_rozdzialu1=="")then nazwa_rozdzialu_aktualna=""; poziom_rozdzialu_aktualny=0; if(id_rozdzialu2=="")then return str; elseif(nazwa_rozdzialu==id_rozdzialu2)then return str; else str=(str~="")and (str.."\n"..wiersz) or wiersz; end; else str=(str~="")and (str.."\n"..wiersz) or wiersz; end; else str=(str~="")and (str.."\n"..wiersz) or wiersz; end; end; if((id_rozdzialu1)and(id_rozdzialu1==""))then return str; elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then return str; end; return ""; end; function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy; end; end; end; local szablonowe_modul=require("Module:Szablonowe"); ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu]; if(not ktore)then return;end; local tab=mw.text.split(tostring(ktore),"%s*;%s*",false); local wynik=""; for _,num in pairs(tab)do local numer_parametru=tonumber(num) or num; for parametr,wartosc in pairs(tabela_parametrow_szablonu)do if(parametr==numer_parametru)then wynik=(wynik or "")..wartosc; end; end; end; return wynik; end); if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik; end; return wynik; end; function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy; end; end; end; local szablonowe_modul=require("Module:Szablonowe"); local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym; local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu]; if(dodatek)then local techniczne_modul=require("Module:Techniczne"); for name,value in pairs(tabela_parametrow_szablonu)do local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name); local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value); dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value); end; return dodatek; end; end); if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik; end; return wynik; end; function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) return "\n\n "; end,nil,nil, function(szablon,obiekt,kod,poziom_iteracji) if(poziom_iteracji==0)then if(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="br")or(nazwa=="hr"))then return true; end; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then return true; end; end); if(wynik)then return wynik;end; end; end; return nil; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst; end; function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE) local CzySpecjalnaLinia=function(linia) local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-"); if(not czy_specjalna_linia)then if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then return true; end; end; return czy_specjalna_linia; end; ---- local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local CzyLiniaZeSpecjalnymiSzablonami=function(linia) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_obiektow_strony_dany_modul_uzyskany); for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then return true; end; end); if(wynik)then return wynik;end; end; end; return nil; end; ---- --tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony); ---- local tab_linie_tekstu=mw.text.split(tekst,"\n"); if(#tab_linie_tekstu==0)then return "";end; local tekst_nowy=tab_linie_tekstu[1]; local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy); if(not czy_linia_poprz)then tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE); end; for i=2,#tab_linie_tekstu,1 do local linia=tab_linie_tekstu[i]; local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia); if(not aktualna_specjalna_linia)then linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE); end; if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then --local czy_wprowadzenie=mw.ustring.match(linia,"^>") local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$"); tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia; else tekst_nowy=tekst_nowy.."\n"..linia; end; czy_linia_poprz=aktualna_specjalna_linia; end; return tekst_nowy; end; function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) local nazwy_modul=require("Module:Nazwy"); tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {}; tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {}; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local szeregi_modul=require("Module:Szeregi"); local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci) and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) or nil; local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji) local tab_obiekt=tab_analiza[obiekt]; if(not tab_obiekt)then return;end; for _,wartosc in pairs(tab_obiekt)do local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(element_wartosc)then element_wartosc[kod]=nil; end; end; end; local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji) tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; end; --local tab_nazwa_spisow_przekierowaniowych={}; if(czy_dalej_rozwazac_zakodowane)then ---- local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego; local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe; local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; ---- local function UsuwanieNowychLiniiZnacznikowe(szablon) local tak=nil; szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ----- if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then if(poziom_iteracji==0)then tak=true;end; return " "; end; end); if(wynik)then return wynik,nil,true;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="br")or(nazwa=="hr"))then if(poziom_iteracji==0)then tak=true;end; return " ",nil,true; end; end; return nil,true; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return szablon,tak; end; local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod) local czy_tak=false; local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(czy_ce)then local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce]; if(szablon_spis_tresci_zawartosc)then czy_tak=czy_tak or true; return szablon_spis_tresci_zawartosc; end; end; return nil; end); if(wynik)then return wynik,nil,true;end; return nil,true; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then czy_tak=czy_tak or true; return zawartosc,nil,true; end; end; end; return nil,true; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return szablon,czy_tak; end; local Modyfikacja=function(szablon,obiekt,kod) local czy_tak=false; local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod); czy_tak=czy_tak or czy_tak1; local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon); czy_tak=czy_tak or czy_tak2; local szablon,ile=mw.ustring.gsub(szablon,"\n"," "); czy_tak=czy_tak or (ile>0); return szablon,czy_tak; end; local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu=parametr1; local nazwa_szablonu=parametr2; local tabela_modyfikatorow=parametr3; if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod); if(not czy_tak)then return nil,true;end; return wynik,true; end; elseif(obiekt=="ZNACZNIK")then local nazwa=parametr1; local zawartosc=parametr2; local tab_atrybuty=parametr3; if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod); if(not czy_tak)then return nil,true;end; return wynik,true; end; end; end; ---- local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); --- --local tab_nazwa_spisow_przekierowaniowych={}; --- local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie) local spacja=" "; local tab_spacja={ ["nbsp"]=spacja, ["#32"]=spacja, ["#x20"]=spacja, }; komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja); local komorka_stara=komorka; if(not nie_trimowanie)then komorka=mw.text.trim(komorka); end; if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end; return ((not nie_trimowanie)and ("\n\n"..komorka.."\n") or komorka); end; ---- local function ZamienNaKody(zawartosc,czy_szablon) local function Linie(wzor) zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b) return "&#"..mw.ustring.byte(a)..";"..(b or ""); end); end; if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then Linie("^([=%*#:;])"); end; local len=mw.ustring.len(zawartosc); if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then Linie("([=])([^%S\n]*)$"); end; return zawartosc; end; tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3; local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(numer_parametru)then local parametr=tabela_parametrow_szablonu[numer_parametru]; if(parametr)then local czy_modyfikacja=false; szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="div")then if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then czy_modyfikacja=true; return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or ""; end; end; end; return nil,true; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); if(czy_modyfikacja)then return szablon; end; end; end; local function AnalizaSzablonu(szablon) local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end; local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu]; if(czy_szablony_bez_generowania_napisowego)then return "";end; if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end; --if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end; end; local szablon2=AnalizaSzablonu(szablon); if(szablon2)then return szablon2;end; local czy_center; szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2; if(szablon)then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil; end; end; local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(szablon_ce)then local zawartosc=tabela_parametrow_szablonu[szablon_ce]; if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then return zawartosc,tabela_parametrow_szablonu; end; end; return nil,tabela_parametrow_szablonu; end); if(wynik)then return wynik;end; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; return nil; elseif(czy_center)then local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(szablon_ce)then local zawartosc=tabela_parametrow_szablonu[szablon_ce]; if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then return zawartosc; else return nil; end; else return nil; end; end; local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu]; if(znacznik_numer)then local parametr=tabela_parametrow_szablonu[znacznik_numer]; if(parametr)then return ZamienNaKody(parametr,true); end; end; end; local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow); if(wynik)then return wynik,nil,true;end; return nil,true; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3; if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then local fun=function() if(nazwa~="div")then return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or ""; elseif((zawartosc)and(zawartosc~=""))then if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then local ile1;local ile2; zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s) if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end; return "\n"; end); zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s) if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end; return ""; end); return ZamienNaKody(zawartosc,false); else return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or ""; end; else return ""; end; end; return fun,nil,true; end; else if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then return zawartosc,nil,true; end; local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty); if(szablon)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100]; if(tablica_danych_parametrow_szablonu_strony_numer)then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; return nil,true; elseif(obiekt=="INNEPRE")then if(mw.ustring.match(szablon,"^%s*$"))then return "",nil,true; end; return nil,true; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then local tak=false; szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then return " "; else local nazwa_zmiennej=znaczniki_szablonowe[nazwa_szablonu]; if(nazwa_zmiennej)then local zawartosc=tabela_parametrow_szablonu[nazwa_zmiennej]; return zawartosc or " "; end; end; end); if(wynik)then return wynik,nil,true;end; elseif(obiekt=="ZNACZNIK")then tak=true; local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3; if((nazwa=="br")or(nazwa=="hr"))then return " ",nil,true; else return zawartosc or "",nil,true; end; end; return nil,true; end); if(tak)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; end; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true); if(not czy_element_spisu)then return "",nil,true;end; elseif(obiekt=="WIKITABELA")then szablon=mw.ustring.match(szablon,"^{|(.-)|}$"); szablon=mw.ustring.gsub(szablon,"^[^\n]+",""); --szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end); szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end); szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n"); szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end) szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end); szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end); return szablon,nil,true; end; return nil,true; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial) tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia) local linia_nie_nil=mw.ustring.match(linia,wzor); if(linia_nie_nil)then local tak=nil; local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then tak=true; return " "; end; local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(szablon_ce)then local tekst=tabela_parametrow_szablonu[szablon_ce]; if(tekst)then tak=true; return tekst; end; end; end); if(wynik)then return wynik,nil,true;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="br")or(nazwa=="hr"))then tak=true; return " ",nil,true; elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then tak=true; return zawartosc or "",nil,true; end; elseif(obiekt=="PRE")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); if(czy_dodatni_rozdzial)then local zawartosc=mw.ustring.gsub(zawartosc,"\n"," "); tak=true; return zawartosc,nil,true; else tak=true; return zawartosc,nil,true; end; else tak=true; return "",nil,true; end; elseif(obiekt=="ŹRÓDŁO")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); if(czy_dodatni_rozdzial)then local zawartosc=mw.ustring.gsub(zawartosc,"\n"," "); tak=true; return zawartosc,nil,true; else tak=true; return zawartosc,nil,true; end; else tak=true; return "",nil,true; end; elseif(obiekt=="NOWIKI")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); local zawartosc=mw.ustring.gsub(zawartosc,"\n"," "); tak=true; return zawartosc,nil,true; else tak=true; return "",nil,true; end; end; return nil,true; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return linia_tekst; else return nil; end; end); end; ----- LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true); LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false); tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n "; else local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(numer_parametru)then local parametr=tabela_parametrow_szablonu[numer_parametru]; if(parametr)then local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr); if(naglowek)then local obiekt_hnumer="ZNACZNIK"; local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1; return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer; end; end; end; end; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n "; end; elseif(obiekt=="INNEPRE")then return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n"; elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n "; end; end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); ----- end; tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->",""); local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy; tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy) return tab_magiczne_derektywy[derektywy] and "" or nil; end); tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2"); tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2"); --tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n"); if(czy_dalej_rozwazac_zakodowane)then ---- tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE); tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu; end; --mw.log( tekst_rozwiniety_calego_artykulu) --local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n"); local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu); local naglowek_aktualnego_rozdzialu; local linia_naglowka_aktualnego_rozdzialu; local poziom_aktualnego_rozdzialu; local poczatek_aktualnego_rozdzialu; local numeracja_aktualnego_rozdzialu; local czy_rozdzial_aktualny_centrowany; local czy_koniec=false; ---- local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); local czy_ce_spis_tresci=nil; ---- local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ----- local tak_ce_spis_tresci=nil; local m=0; local function Wystepowanie(linia,funkcja1,funkcja2) local czy_znaleziono_okladka=false; local function RozwazajLinie(szablon,obiekt,kod) if(szablon)then local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]); if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then return 1; elseif(czy_okladka)then czy_znaleziono_okladka=true; end; end; else return 0; end; end; end; local function RozwazajLinieZnacznikowe(zawartosc) local wartosc; local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) local function CenterZnacznikLinia(szablon,obiekt,kod) wartosc=RozwazajLinie(szablon,obiekt,kod); if(not wartosc)then return;end; if(wartosc==1)then return nil;end; return szablon,tekst; end; if(obiekt=="SZABLON")then local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod); return szablon,tekst; end); return szablon,tekst; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod); return szablon,tekst; end; end); for szablon,obiekt,kod in iter do end; return wartosc; end; local szablon_spis_tresci; local function spis_tresci(wystepowanie_linkow,hn_number) local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iter do local function Spis(szablon,obiekt,kod) local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then tak_ce_spis_tresci=hn_number; szablon_spis_tresci=wystepowanie_linkow; return 1; end; else return 0; end; end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local wynik=Spis(szablon,obiekt,kod); if(wynik)then return wynik;end; end); if(wynik)then return wynik;end; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then local wynik=Spis(szablon,obiekt,kod); if(wynik)then return wynik;end; end; end; wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow; wystepowanie_linkow=mw.text.trim(wystepowanie_linkow); local czy_ce=jakie_spisy_tresci[wystepowanie_linkow]; if(czy_ce)then tak_ce_spis_tresci=hn_number; szablon_spis_tresci=wystepowanie_linkow; return 1; end; end; local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$"); local tak=nil; if(czy_dalej_rozwazac_zakodowane)then if(wystepowanie_linkow)then local czy_rozdzial=nil;local wartosc=nil; local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK"); if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then local podrecznik=nil; if(czy_szablon)then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ----- local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(czy_ce)then local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce]; if(szablon_spis_tresci_zawartosc)then szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$"); wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true); else wartosc=RozwazajLinie(szablon,obiekt,kod); end; else wartosc=RozwazajLinie(szablon,obiekt,kod); if(wartosc)then podrecznik=true;else podrecznik=false;end; end; end); elseif(czy_znacznik)then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if(nazwa=="center")then szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$"); wartosc=spis_tresci(szablon_spis_tresci,true); elseif(znaczniki_wprowadzenia_tekstu[nazwa])then szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$"); local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty) wartosc=spis_tresci(szablon_spis_tresci,hn_number); else wartosc=RozwazajLinieZnacznikowe(zawartosc); end; end; else wartosc=RozwazajLinie(szablon,obiekt,kod); if(wartosc)then podrecznik=true;else podrecznik=false;end; end; if(podrecznik==true)then if(not czy_rozdzial)then if(wartosc==1)then local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod))) and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>")) and (mw.ustring.match(tekst,"^[^%.]*%s*$")); if(not wystepowanie_linku_lub_szablonu)then return nil;end; czy_rozdzial=true; elseif(wartosc==0)then local ile; tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),""); return "", ((ile>0) and tekst or nil); end; end; elseif(podrecznik==false)then if(not wartosc)then if(czy_znaleziono_okladka)then local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(not czy_nie_uwzgledniac_linii)then local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),""); return "", ((ile>0) and tekst or nil); else czy_znaleziono_okladka=false; end; else local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),""); return "", ((ile>0) and tekst or nil); end; end; end; if(not wartosc)then return;end; tak=tak or (wartosc==1); if(tak)then return;end; return szablon,tekst; else local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),""); return "", ((ile>0) and tekst or nil); end; end); for szablon,obiekt,kod in iter do end; end; end; if(tak)then funkcja1(szablon_spis_tresci); else funkcja2(); end; end return function() local tab_str={}; local linia; local function IterMain() for linia in iter_main do local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany; --------------------------------------- nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"); if(nazwa_rozdzialu) then nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu); end; if(not nazwa_rozdzialu)then if(czy_inne_rozdzialy_analizowac)then if(not czy_w_spisie_tresci)then Wystepowanie(linia,function(szablon_spis_tresci) if(not tak_ce_spis_tresci)then nazwa_rozdzialu="Spis treści"; poziom_rozdzialu=nil; table.insert(tab_str,linia); else if(szablon_spis_tresci)then local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci); if((numeracja)and(rozdzial))then numeracja_rozdzialu=numeracja; nazwa_rozdzialu=rozdzial; else nazwa_rozdzialu=szablon_spis_tresci; numeracja_rozdzialu=nil; end; else nazwa_rozdzialu="Spis treści"; numeracja_rozdzialu=nil; end; local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci); poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2; czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false; poczatek_rozdzialu=nil; --str=""; end; end,function() nazwa_rozdzialu=nil; end); end; if(not nazwa_rozdzialu)then local linia_temp; linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); end; else nazwa_rozdzialu=nil; end; end; if(nazwa_rozdzialu)then czy_w_spisie_tresci=true; if(not naglowek_aktualnego_rozdzialu)then naglowek_aktualnego_rozdzialu=nazwa_rozdzialu; linia_naglowka_aktualnego_rozdzialu=linia; poziom_aktualnego_rozdzialu=poziom_rozdzialu; poczatek_aktualnego_rozdzialu=poczatek_rozdzialu; numeracja_aktualnego_rozdzialu=numeracja_rozdzialu; czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany; else ---------------------------------------------- local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu; local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu; local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu; local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu; local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu; local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany; ---------------------------------------------- naglowek_aktualnego_rozdzialu=nazwa_rozdzialu; linia_naglowka_aktualnego_rozdzialu=linia; poziom_aktualnego_rozdzialu=poziom_rozdzialu; poczatek_aktualnego_rozdzialu=poczatek_rozdzialu; numeracja_aktualnego_rozdzialu=numeracja_rozdzialu; czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany; local str=table.concat(tab_str,"\n"); if(not __FUNKCJA2)then naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or naglowek_posredni_aktualnego_rozdzialu ) or nil; str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or str) or nil; elseif(czy_dalej_rozwazac_zakodowane)then naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil; str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil; end; --linia_poprz=nil; m=m+1; return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany; end; else if(naglowek_aktualnego_rozdzialu)then table.insert(tab_str,linia); end; --linia_poprz=linia; end; end; if(czy_koniec)then return nil;end; czy_koniec=true; --- local str=table.concat(tab_str,"\n"); -- if(not __FUNKCJA2)then naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul) or naglowek_aktualnego_rozdzialu ) or nil; str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil; elseif(czy_dalej_rozwazac_zakodowane)then naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil; str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil; end; --linia_nast=nil;linia_poprz=nil; m=m+1; return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany; end; ---- local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain(); return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany; end,tekst_rozwiniety_calego_artykulu; end; return p; q5a1w87vs7ck0pypg3mxd9ar8i1n6ac 557787 557780 2026-09-27T14:08:35Z Persino 2851 557787 Scribunto text/plain local p={}; function p.NapisWprowadzeniaTekstu(rozdzial,poziom,id) local naglowek; poziom=poziom or 1; poziom=(poziom>0)and poziom or 1; if(poziom<=6)then local str_poziom=mw.ustring.rep("=",poziom); naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n"; else naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n"; end; return naglowek; end; function p.NapisWprowadzeniaTekstuHn(rozdzial,poziom,id) local naglowek; poziom=poziom or 1; poziom=(poziom>0)and poziom or 1; if(poziom<=6)then local str_poziom=mw.ustring.rep("=",poziom); naglowek="\n<h"..poziom.." "..(id and ("id=\""..id.."\"") or "")..">"..rozdzial.."</h"..poziom..">\n"; else naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n"; end; return naglowek; end; function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod) if(mw.ustring.match(zawartosc,"\n"))then return false;end; local szablonowe_modul=require("Module:Szablonowe"); local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod); tekst='\n'..tekst..'\n'; if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end; if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end; return false; end; function p.NapisWprowadzeniaTekstuHNumer(parametr) local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr); if(not naglowek)then return nil;end; if(poziom<=6)then return "<h"..poziom..">"..naglowek.."</h"..poziom..">"; else return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>"; end; end; function p.PodajNapisPoziomuWprowadzeniaTekstu(linia) if(mw.ustring.match(linia,"^%s*=*%s*$"))then return nil,0; end; local rowna_lewy=mw.ustring.match(linia,"^(=+)"); local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$"); if((rowna_lewy)and(rowna_prawy))then local min_rowna=math.min(#rowna_lewy,#rowna_prawy); local str_min_rowna=mw.ustring.rep("=",min_rowna); local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$"); if(not naglowek)then return nil,0; end; local naglowek=mw.text.trim(naglowek); return naglowek,min_rowna; else return nil,0; end; end; function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia) local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.-)</[Hh](%d+)>"); if(not liczba1)then return nil;end; if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then local liczba1=tonumber(liczba1); if(not liczba1)then return nil;end; if((liczba1<1)or(liczba1>6))then return nil;end; return zawartosc,liczba1; end; return nil; end; function p.CzyJestNapisWprowadzeniaTekstu(zawartosc) return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n") or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n") or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$") or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$"); end; function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc) return mw.ustring.match(zawartosc,"^[;%*:#]+") or mw.ustring.match(zawartosc,"\n[;%*:#]+"); end; function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz) local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz); if(czy_naglowek)then return true,true;end; --czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>"); local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false; return czy_naglowek,false; end; function p.WierszHNumer(tekst) local tekst=mw.ustring.gsub(tekst,"(<[Hh](%d+)[^<>]*>)(.-)(</[Hh]%2%s*>)",function(lewy,poziom,tekst,prawy) poziom=tonumber(poziom) or 0; if((poziom>=1)and(poziom<=6))then tekst=mw.ustring.gsub(tekst,"\n"," "); return "\n"..lewy..tekst..prawy.."\n"; end; end); return tekst; end; function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy; local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy; ----- local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ----- local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iter do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then return true; end; end); if(wynik)then return wynik;end; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then return true; --elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then --return true; end; end; return false; end; function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) local szablonowe_modul=require("Module:Szablonowe"); ----- local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iter do if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then return true; end; end; return false; end; function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja) local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$"); if(czy)then local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)"); local tab=mw.text.split(num,"%.",false); if(#tab==1)then if(mw.ustring.match(num,"^%d+$"))then return rozdzial_z_numeracja,""; end; else if(tab[#tab]=="")then tab[#tab]=nil;end; end; local tak=true; for i=1,#tab,1 do tak=tak and mw.ustring.match(tab[i],"^%d+$"); if(not tak)then break;end; end; if(tak)then local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*"); local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*",""); return rozdzial_bez_numeracji,numeracja; end; end; return rozdzial_z_numeracja,""; end; function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu; return tab_kom[nazwa_szablonu]; end; function p.UruchamianieAnalizatoraSpisuRzeczyStrony() return true; end; function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]-'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]-'*)[%s_]*$"))); if(rozdzial)then return rozdzial,true; else local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); if(spis_tresci)then return linia,true; else local rozdzial,main=nil,nil; if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$"); end; if(rozdzial)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then if(mw.ustring.match(rozdzial_main,"^[^']-$"))then if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then return rozdzial,true; end; end; end; else local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$"); if(czy_nie_rozdzial_zerowy)then return linia,false;end; end; return nil; end; end; end; function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end; local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$"); if(not czy_dwukropki)then return false;end; local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$"); if(not czy_miedzy_cudzyslowami)then return false;end; if(not z_parametrami_linkowymi)then return true;end; local szablonowe_modul=require("Module:Szablonowe"); local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()); if(not czy_sa_kody)then return true;end; local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW"))then local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil); if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then return false; end; end; end; return true; end; function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty) local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty'); local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa]; if((atrybuty)and(numer_rozdzialu>=6))then local klasa=atrybuty["class"]; if(klasa)then local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$") or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+") or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+") or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$"); mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6; mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6; numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu; end; end; return numer_rozdzialu; end; function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc) local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$"); return numeracja,rozdzial; end; function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil; local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty'); local parametry_modul=require("Module:Parametry"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local techniczne_modul=require("Module:Techniczne"); local specjalne_modul=require("Module:Specjalne"); local strony_modul=require("Module:Strony"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy; local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local maksymalny_rozmiar_rozdzialu_zerowego=70; return function(linia,tak_ce_spis_tresci) ---- local rozdzial=nil;local numeracja=nil; local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$"); local rozdzial_z_numeracja_nie_przetworzone=nil; ----- ---- if(not poczatek and not rozdzial_z_numeracja)then rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$") if(rozdzial_z_numeracja)then poczatek=""; rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja); rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)",""); rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$",""); rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); else local function LiniaCydzyslow(linia) local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$") if(not linia_wew_cudz)then return false;end; return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$') and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$")))) end; if(LiniaCydzyslow(linia))then rozdzial=linia; poczatek=""; numeracja=""; else local url_iter=mw.ustring.gmatch(linia,"(%S+)"); local czy_rozdzial=false; for url in url_iter do czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url); if(czy_rozdzial)then break; end; end; if(czy_rozdzial)then poczatek=""; numeracja=""; rozdzial=linia; end; end; end; else rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja; rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja); rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)",""); rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$",""); rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); end; local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst; local nazwa,zawartosc,atrybuty; if(rozdzial)then tekst=rozdzial;else tekst=linia;end; ---- local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then return nil; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then return true; end; end); if(wynik)then return nil;end; end; end; return true; end; local FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu=function(wartosc) if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end; if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end; numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc); if(rozdzial)then local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial); if(not wynik)then numeracja=nil;rozdzial=nil; return nil; end; end; end; local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(czy_ce)then local wartosc=tabela_parametrow_szablonu[czy_ce]; if(wartosc)then return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(wartosc); end; return nil; end; end; local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty) if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(zawartosc); end; end; return nil; end; ---- local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) --- local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(czy_ce)then ze_specialnymi_obiektami=true; czy_centrowanie=true; NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow); --if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; return true; elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then ze_specialnymi_obiektami=true; if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; return true; end; end); if(wynik)then return;end; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; ze_specialnymi_obiektami=true; return nil; elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; ze_specialnymi_obiektami=true; return nil; elseif(obiekt=="ZNACZNIK")then nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if(nazwa=="center")then ze_specialnymi_obiektami=true; czy_centrowanie=true; NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty); --if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end; return nil; elseif(znaczniki_wprowadzenia_tekstu[nazwa])then ze_specialnymi_obiektami=true; czy_znaczniki_hn=true; NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty); return nil; end; end; end; return szablon; end); for szablon,obiekt,kod in iter do end; rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil; poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil; numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil; if(not ze_specialnymi_obiektami)then local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then return linia,rozdzial,0,nil,numeracja; else return nil; end; else local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek); local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja); if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then return nil; elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then return linia,rozdzial,0,nil,numeracja; else return nil; end; end; else return nil; end; elseif(czy_centrowanie)then if(tak_ce_spis_tresci)then if((rozdzial)and(numeracja))then if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then return nil,nil,nil,nil; end; return linia,rozdzial,2,nil,numeracja,true; end; end; return nil; elseif(czy_znaczniki_hn)then if((rozdzial)and(numeracja))then if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then return nil,nil,nil,nil; end; local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); return linia,rozdzial,numer_rozdzialu,nil,numeracja; end; elseif(rozdzial)then local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja); local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial); if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then return nil; end; if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil; if(not czy_pominac_ten_rozdzial_jako_rozdzial)then if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; else return nil; end; else return nil; end; else local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek); if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then return nil; else local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil; if(not czy_pominac_ten_rozdzial_jako_rozdzial)then if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; else return nil; end; else return nil; end; end; end; else return nil; end; return nil; end; end; function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame) local strona=frame.args[1]; local id_rozdzialu1=frame.args[2] or ""; local id_rozdzialu2=frame.args[3] or ""; strona=frame:preprocess(strona); local title=mw.title.makeTitle('',strona); if((not title)or(not title.exists))then return nil; end; local tekst=title:getContent(); if(not tekst)then return nil;end; return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); end; function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst) tekst=mw.ustring.gsub(tekst,"^[%s_]+",""); tekst=mw.ustring.gsub(tekst,"[%s_]+$",""); tekst=mw.ustring.gsub(tekst,"[%s_]+","_"); return tekst; end; function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame) local strona=frame.args[1]; local id_rozdzialu=frame.args[2] or ""; strona=frame:preprocess(strona); local title=mw.title.makeTitle('',strona); if((not title)or(not title.exists))then return nil; end; local tekst=title:getContent(); if(not tekst)then return nil;end; id_rozdzialu=frame:preprocess(id_rozdzialu); local specjalne_modul=require("Module:Specjalne"); id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu); id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu); local html_modul=require("Module:Html"); id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu); tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>",""); tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1"); --tekst=mw.ustring.gsub(tekst,"\n\n","\n\n"); tekst=p.WierszHNumer(tekst); local szeregi_modul=require("Module:Szeregi"); local iter=szeregi_modul.IteratorLiniiTekstu(tekst); local tab_rozdzialy={}; local specjalne_modul=require("Module:Specjalne"); for wiersz in iter do local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz); if(czy_naglowek)then local nazwa_rozdzialu,poziom_rozdzialu; if(czy_naglowek_wiki)then nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz); else nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz); end; nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu); local nazwa_rozdzialu_aktualna=nazwa_rozdzialu; nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu); nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu); nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu); local c=1; for i=1,#tab_rozdzialy,1 do if(tab_rozdzialy[i]==nazwa_rozdzialu)then c=c+1; end; end; if(c>1)then nazwa_rozdzialu=nazwa_rozdzialu.."_"..c; end; table.insert(tab_rozdzialy,nazwa_rozdzialu); if(id_rozdzialu==nazwa_rozdzialu)then return nazwa_rozdzialu_aktualna; end; end; end; return nil; end; function p.NumerSekcjiStrony(frame) local strona=frame.args[1]; local id_rozdzialu=frame.args[2] or ""; strona=frame:preprocess(strona); local title=mw.title.makeTitle('',strona); if((not title)or(not title.exists))then return nil; end; local tekst=title:getContent(); if(not tekst)then return nil;end; id_rozdzialu=frame:preprocess(id_rozdzialu); local specjalne_modul=require("Module:Specjalne"); id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu); id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu); local html_modul=require("Module:Html"); id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu); tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>",""); tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1"); --tekst=mw.ustring.gsub(tekst,"\n\n","\n\n"); tekst=p.WierszHNumer(tekst); local szeregi_modul=require("Module:Szeregi"); local iter=szeregi_modul.IteratorLiniiTekstu(tekst); local tab_rozdzialy={}; local ile=1; for wiersz in iter do local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz); if(czy_naglowek)then local nazwa_rozdzialu,poziom_rozdzialu; if(czy_naglowek_wiki)then nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz); else nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz); end; nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu); nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu); nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu); nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu); local c=1; for i=1,#tab_rozdzialy,1 do if(tab_rozdzialy[i]==nazwa_rozdzialu)then c=c+1; end; end; if(c>1)then nazwa_rozdzialu=nazwa_rozdzialu.."_"..c; end; table.insert(tab_rozdzialy,nazwa_rozdzialu); if(id_rozdzialu==nazwa_rozdzialu)then return ile; end; ile=ile+1; end end; return nil; end; function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2) local frame=mw.getCurrentFrame(); local specjalne_modul=require("Module:Specjalne"); local html_modul=require("Module:Html"); id_rozdzialu1=frame:preprocess(id_rozdzialu1); id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1); id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1); id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1); id_rozdzialu2=frame:preprocess(id_rozdzialu2); id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2); id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2); id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2); tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>",""); tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1"); --tekst=mw.ustring.gsub(tekst,"\n\n","\n\n"); tekst=p.WierszHNumer(tekst); local szeregi_modul=require("Module:Szeregi"); local iter=szeregi_modul.IteratorLiniiTekstu(tekst); local tab_rozdzialy={}; local str="" local nazwa_rozdzialu_aktualna; local poziom_rozdzialu_aktualny; for wiersz in iter do local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz); if(czy_naglowek)then local nazwa_rozdzialu,poziom_rozdzialu; if(czy_naglowek_wiki)then nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz); else nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz); end; nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu); nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu); nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu); nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu); local c=1; for i=1,#tab_rozdzialy,1 do if(tab_rozdzialy[i]==nazwa_rozdzialu)then c=c+1; end; end; if(c>1)then nazwa_rozdzialu=nazwa_rozdzialu.."_"..c; end; table.insert(tab_rozdzialy,nazwa_rozdzialu); if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1)) and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then return str; end; if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then nazwa_rozdzialu_aktualna=nazwa_rozdzialu; poziom_rozdzialu_aktualny=poziom_rozdzialu; str=""; elseif(id_rozdzialu1=="")then nazwa_rozdzialu_aktualna=""; poziom_rozdzialu_aktualny=0; if(id_rozdzialu2=="")then return str; elseif(nazwa_rozdzialu==id_rozdzialu2)then return str; else str=(str~="")and (str.."\n"..wiersz) or wiersz; end; else str=(str~="")and (str.."\n"..wiersz) or wiersz; end; else str=(str~="")and (str.."\n"..wiersz) or wiersz; end; end; if((id_rozdzialu1)and(id_rozdzialu1==""))then return str; elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then return str; end; return ""; end; function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy; end; end; end; local szablonowe_modul=require("Module:Szablonowe"); ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu]; if(not ktore)then return;end; local tab=mw.text.split(tostring(ktore),"%s*;%s*",false); local wynik=""; for _,num in pairs(tab)do local numer_parametru=tonumber(num) or num; for parametr,wartosc in pairs(tabela_parametrow_szablonu)do if(parametr==numer_parametru)then wynik=(wynik or "")..wartosc; end; end; end; return wynik; end); if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik; end; return wynik; end; function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy; end; end; end; local szablonowe_modul=require("Module:Szablonowe"); local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym; local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu]; if(dodatek)then local techniczne_modul=require("Module:Techniczne"); for name,value in pairs(tabela_parametrow_szablonu)do local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name); local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value); dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value); end; return dodatek; end; end); if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik; end; return wynik; end; function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) return "\n\n "; end,nil,nil, function(szablon,obiekt,kod,poziom_iteracji) if(poziom_iteracji==0)then if(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="br")or(nazwa=="hr"))then return true; end; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then return true; end; end); if(wynik)then return wynik;end; end; end; return nil; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst; end; function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE) local CzySpecjalnaLinia=function(linia) local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-"); if(not czy_specjalna_linia)then if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then return true; end; end; return czy_specjalna_linia; end; ---- local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local CzyLiniaZeSpecjalnymiSzablonami=function(linia) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_obiektow_strony_dany_modul_uzyskany); for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then return true; end; end); if(wynik)then return wynik;end; end; end; return nil; end; ---- --tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony); ---- local tab_linie_tekstu=mw.text.split(tekst,"\n"); if(#tab_linie_tekstu==0)then return "";end; local tekst_nowy=tab_linie_tekstu[1]; local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy); if(not czy_linia_poprz)then tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE); end; for i=2,#tab_linie_tekstu,1 do local linia=tab_linie_tekstu[i]; local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia); if(not aktualna_specjalna_linia)then linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE); end; if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then --local czy_wprowadzenie=mw.ustring.match(linia,"^>") local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$"); tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia; else tekst_nowy=tekst_nowy.."\n"..linia; end; czy_linia_poprz=aktualna_specjalna_linia; end; return tekst_nowy; end; function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) local nazwy_modul=require("Module:Nazwy"); tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {}; tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {}; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local szeregi_modul=require("Module:Szeregi"); local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci) and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) or nil; local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji) local tab_obiekt=tab_analiza[obiekt]; if(not tab_obiekt)then return;end; for _,wartosc in pairs(tab_obiekt)do local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(element_wartosc)then element_wartosc[kod]=nil; end; end; end; local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji) tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; end; --local tab_nazwa_spisow_przekierowaniowych={}; if(czy_dalej_rozwazac_zakodowane)then ---- local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego; local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe; local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; ---- local function UsuwanieNowychLiniiZnacznikowe(szablon) local tak=nil; szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ----- if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then if(poziom_iteracji==0)then tak=true;end; return " "; end; end); if(wynik)then return wynik,nil,true;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="br")or(nazwa=="hr"))then if(poziom_iteracji==0)then tak=true;end; return " ",nil,true; end; end; return nil,true; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return szablon,tak; end; local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod) local czy_tak=false; local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(czy_ce)then local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce]; if(szablon_spis_tresci_zawartosc)then czy_tak=czy_tak or true; return szablon_spis_tresci_zawartosc; end; end; return nil; end); if(wynik)then return wynik,nil,true;end; return nil,true; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then czy_tak=czy_tak or true; return zawartosc,nil,true; end; end; end; return nil,true; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return szablon,czy_tak; end; local Modyfikacja=function(szablon,obiekt,kod) local czy_tak=false; local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod); czy_tak=czy_tak or czy_tak1; local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon); czy_tak=czy_tak or czy_tak2; local szablon,ile=mw.ustring.gsub(szablon,"\n"," "); czy_tak=czy_tak or (ile>0); return szablon,czy_tak; end; local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu=parametr1; local nazwa_szablonu=parametr2; local tabela_modyfikatorow=parametr3; if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod); if(not czy_tak)then return nil,true;end; return wynik,true; end; elseif(obiekt=="ZNACZNIK")then local nazwa=parametr1; local zawartosc=parametr2; local tab_atrybuty=parametr3; if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod); if(not czy_tak)then return nil,true;end; return wynik,true; end; end; end; ---- local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); --- --local tab_nazwa_spisow_przekierowaniowych={}; --- local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie) local spacja=" "; local tab_spacja={ ["nbsp"]=spacja, ["#32"]=spacja, ["#x20"]=spacja, }; komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja); local komorka_stara=komorka; if(not nie_trimowanie)then komorka=mw.text.trim(komorka); end; if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end; return ((not nie_trimowanie)and ("\n\n"..komorka.."\n") or komorka); end; ---- local function ZamienNaKody(zawartosc,czy_szablon) local function Linie(wzor) zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b) return "&#"..mw.ustring.byte(a)..";"..(b or ""); end); end; if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then Linie("^([=%*#:;])"); end; local len=mw.ustring.len(zawartosc); if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then Linie("([=])([^%S\n]*)$"); end; return zawartosc; end; tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3; local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(numer_parametru)then local parametr=tabela_parametrow_szablonu[numer_parametru]; if(parametr)then local czy_modyfikacja=false; szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="div")then if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then czy_modyfikacja=true; return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or ""; end; end; end; return nil,true; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); if(czy_modyfikacja)then return szablon; end; end; end; local function AnalizaSzablonu(szablon) local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end; local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu]; if(czy_szablony_bez_generowania_napisowego)then return "";end; if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end; --if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end; end; local szablon2=AnalizaSzablonu(szablon); if(szablon2)then return szablon2;end; local czy_center; szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2; if(szablon)then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil; end; end; local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(szablon_ce)then local zawartosc=tabela_parametrow_szablonu[szablon_ce]; if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then return zawartosc,tabela_parametrow_szablonu; end; end; return nil,tabela_parametrow_szablonu; end); if(wynik)then return wynik;end; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; return nil; elseif(czy_center)then local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(szablon_ce)then local zawartosc=tabela_parametrow_szablonu[szablon_ce]; if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then return zawartosc; else return nil; end; else return nil; end; end; local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu]; if(znacznik_numer)then local parametr=tabela_parametrow_szablonu[znacznik_numer]; if(parametr)then return ZamienNaKody(parametr,true); end; end; end; local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow); if(wynik)then return wynik,nil,true;end; return nil,true; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3; if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then local fun=function() if(nazwa~="div")then return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or ""; elseif((zawartosc)and(zawartosc~=""))then if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then local ile1;local ile2; zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s) if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end; return "\n"; end); zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s) if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end; return ""; end); return ZamienNaKody(zawartosc,false); else return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or ""; end; else return ""; end; end; return fun,nil,true; end; else if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then return zawartosc,nil,true; end; local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty); if(szablon)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100]; if(tablica_danych_parametrow_szablonu_strony_numer)then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; return nil,true; elseif(obiekt=="INNEPRE")then if(mw.ustring.match(szablon,"^%s*$"))then return "",nil,true; end; return nil,true; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then local tak=false; szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then return " "; else local nazwa_zmiennej=znaczniki_szablonowe[nazwa_szablonu]; if(nazwa_zmiennej)then local zawartosc=tabela_parametrow_szablonu[nazwa_zmiennej]; return zawartosc or " "; end; end; end); if(wynik)then return wynik,nil,true;end; elseif(obiekt=="ZNACZNIK")then tak=true; local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3; if((nazwa=="br")or(nazwa=="hr"))then return " ",nil,true; else return zawartosc or "",nil,true; end; end; return nil,true; end); if(tak)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; end; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true); if(not czy_element_spisu)then return "",nil,true;end; elseif(obiekt=="WIKITABELA")then szablon=mw.ustring.match(szablon,"^{|(.-)|}$"); szablon=mw.ustring.gsub(szablon,"^[^\n]+",""); --szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end); szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end); szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n"); szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end) szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end); szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka) return PrzetwarzanieZnacznikowe(komorka); end); return szablon,nil,true; end; return nil,true; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial) tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia) local linia_nie_nil=mw.ustring.match(linia,wzor); if(linia_nie_nil)then local tak=nil; local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then tak=true; return " "; end; local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(szablon_ce)then local tekst=tabela_parametrow_szablonu[szablon_ce]; if(tekst)then tak=true; return tekst; end; end; end); if(wynik)then return wynik,nil,true;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="br")or(nazwa=="hr"))then tak=true; return " ",nil,true; elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then tak=true; return zawartosc or "",nil,true; end; elseif(obiekt=="PRE")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); if(czy_dodatni_rozdzial)then local zawartosc=mw.ustring.gsub(zawartosc,"\n"," "); tak=true; return zawartosc,nil,true; else tak=true; return zawartosc,nil,true; end; else tak=true; return "",nil,true; end; elseif(obiekt=="ŹRÓDŁO")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); if(czy_dodatni_rozdzial)then local zawartosc=mw.ustring.gsub(zawartosc,"\n"," "); tak=true; return zawartosc,nil,true; else tak=true; return zawartosc,nil,true; end; else tak=true; return "",nil,true; end; elseif(obiekt=="NOWIKI")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); local zawartosc=mw.ustring.gsub(zawartosc,"\n"," "); tak=true; return zawartosc,nil,true; else tak=true; return "",nil,true; end; end; return nil,true; end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return linia_tekst; else return nil; end; end); end; ----- LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true); LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false); tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n "; else local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(numer_parametru)then local parametr=tabela_parametrow_szablonu[numer_parametru]; if(parametr)then local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr); if(naglowek)then local obiekt_hnumer="ZNACZNIK"; local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1; return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer; end; end; end; end; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n "; end; elseif(obiekt=="INNEPRE")then return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n"; elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n "; end; end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); ----- end; tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->",""); local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy; tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy) return tab_magiczne_derektywy[derektywy] and "" or nil; end); tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2"); tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2"); --tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n"); if(czy_dalej_rozwazac_zakodowane)then ---- tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE); tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu; end; --mw.log( tekst_rozwiniety_calego_artykulu) --local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n"); local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu); local naglowek_aktualnego_rozdzialu; local linia_naglowka_aktualnego_rozdzialu; local poziom_aktualnego_rozdzialu; local poczatek_aktualnego_rozdzialu; local numeracja_aktualnego_rozdzialu; local czy_rozdzial_aktualny_centrowany; local czy_koniec=false; ---- local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); local czy_ce_spis_tresci=nil; ---- local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ----- local tak_ce_spis_tresci=nil; local m=0; local function Wystepowanie(linia,funkcja1,funkcja2) local czy_znaleziono_okladka=false; local function RozwazajLinie(szablon,obiekt,kod) if(szablon)then local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]); if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then return 1; elseif(czy_okladka)then czy_znaleziono_okladka=true; end; end; else return 0; end; end; end; local function RozwazajLinieZnacznikowe(zawartosc) local wartosc; local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) local function CenterZnacznikLinia(szablon,obiekt,kod) wartosc=RozwazajLinie(szablon,obiekt,kod); if(not wartosc)then return;end; if(wartosc==1)then return nil;end; return szablon,tekst; end; if(obiekt=="SZABLON")then local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod); return szablon,tekst; end); return szablon,tekst; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod); return szablon,tekst; end; end); for szablon,obiekt,kod in iter do end; return wartosc; end; local szablon_spis_tresci; local function spis_tresci(wystepowanie_linkow,hn_number) local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iter do local function Spis(szablon,obiekt,kod) local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then tak_ce_spis_tresci=hn_number; szablon_spis_tresci=wystepowanie_linkow; return 1; end; else return 0; end; end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local wynik=Spis(szablon,obiekt,kod); if(wynik)then return wynik;end; end); if(wynik)then return wynik;end; elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then local wynik=Spis(szablon,obiekt,kod); if(wynik)then return wynik;end; end; end; wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow; wystepowanie_linkow=mw.text.trim(wystepowanie_linkow); local czy_ce=jakie_spisy_tresci[wystepowanie_linkow]; if(czy_ce)then tak_ce_spis_tresci=hn_number; szablon_spis_tresci=wystepowanie_linkow; return 1; end; end; local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$"); local tak=nil; if(czy_dalej_rozwazac_zakodowane)then if(wystepowanie_linkow)then local czy_rozdzial=nil;local wartosc=nil; local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK"); if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then local podrecznik=nil; if(czy_szablon)then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ----- local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(czy_ce)then local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce]; if(szablon_spis_tresci_zawartosc)then szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$"); wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true); else wartosc=RozwazajLinie(szablon,obiekt,kod); end; else wartosc=RozwazajLinie(szablon,obiekt,kod); if(wartosc)then podrecznik=true;else podrecznik=false;end; end; end); elseif(czy_znacznik)then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if(nazwa=="center")then szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$"); wartosc=spis_tresci(szablon_spis_tresci,true); elseif(znaczniki_wprowadzenia_tekstu[nazwa])then szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$"); local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty) wartosc=spis_tresci(szablon_spis_tresci,hn_number); else wartosc=RozwazajLinieZnacznikowe(zawartosc); end; end; else wartosc=RozwazajLinie(szablon,obiekt,kod); if(wartosc)then podrecznik=true;else podrecznik=false;end; end; if(podrecznik==true)then if(not czy_rozdzial)then if(wartosc==1)then local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod))) and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>")) and (mw.ustring.match(tekst,"^[^%.]*%s*$")); if(not wystepowanie_linku_lub_szablonu)then return nil;end; czy_rozdzial=true; elseif(wartosc==0)then local ile; tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),""); return "", ((ile>0) and tekst or nil); end; end; elseif(podrecznik==false)then if(not wartosc)then if(czy_znaleziono_okladka)then local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(not czy_nie_uwzgledniac_linii)then local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),""); return "", ((ile>0) and tekst or nil); else czy_znaleziono_okladka=false; end; else local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),""); return "", ((ile>0) and tekst or nil); end; end; end; if(not wartosc)then return;end; tak=tak or (wartosc==1); if(tak)then return;end; return szablon,tekst; else local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),""); return "", ((ile>0) and tekst or nil); end; end); for szablon,obiekt,kod in iter do end; end; end; if(tak)then funkcja1(szablon_spis_tresci); else funkcja2(); end; end return function() local tab_str={}; local linia; local function IterMain() for linia in iter_main do local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany; --------------------------------------- nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"); if(nazwa_rozdzialu) then nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu); end; if(not nazwa_rozdzialu)then if(czy_inne_rozdzialy_analizowac)then if(not czy_w_spisie_tresci)then Wystepowanie(linia,function(szablon_spis_tresci) if(not tak_ce_spis_tresci)then nazwa_rozdzialu="Spis treści"; poziom_rozdzialu=nil; table.insert(tab_str,linia); else if(szablon_spis_tresci)then local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci); if((numeracja)and(rozdzial))then numeracja_rozdzialu=numeracja; nazwa_rozdzialu=rozdzial; else nazwa_rozdzialu=szablon_spis_tresci; numeracja_rozdzialu=nil; end; else nazwa_rozdzialu="Spis treści"; numeracja_rozdzialu=nil; end; local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci); poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2; czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false; poczatek_rozdzialu=nil; --str=""; end; end,function() nazwa_rozdzialu=nil; end); end; if(not nazwa_rozdzialu)then local linia_temp; linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); end; else nazwa_rozdzialu=nil; end; end; if(nazwa_rozdzialu)then czy_w_spisie_tresci=true; if(not naglowek_aktualnego_rozdzialu)then naglowek_aktualnego_rozdzialu=nazwa_rozdzialu; linia_naglowka_aktualnego_rozdzialu=linia; poziom_aktualnego_rozdzialu=poziom_rozdzialu; poczatek_aktualnego_rozdzialu=poczatek_rozdzialu; numeracja_aktualnego_rozdzialu=numeracja_rozdzialu; czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany; else ---------------------------------------------- local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu; local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu; local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu; local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu; local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu; local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany; ---------------------------------------------- naglowek_aktualnego_rozdzialu=nazwa_rozdzialu; linia_naglowka_aktualnego_rozdzialu=linia; poziom_aktualnego_rozdzialu=poziom_rozdzialu; poczatek_aktualnego_rozdzialu=poczatek_rozdzialu; numeracja_aktualnego_rozdzialu=numeracja_rozdzialu; czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany; local str=table.concat(tab_str,"\n"); if(not __FUNKCJA2)then naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or naglowek_posredni_aktualnego_rozdzialu ) or nil; str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or str) or nil; elseif(czy_dalej_rozwazac_zakodowane)then naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil; str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil; end; --linia_poprz=nil; m=m+1; return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany; end; else if(naglowek_aktualnego_rozdzialu)then table.insert(tab_str,linia); end; --linia_poprz=linia; end; end; if(czy_koniec)then return nil;end; czy_koniec=true; --- local str=table.concat(tab_str,"\n"); -- if(not __FUNKCJA2)then naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul) or naglowek_aktualnego_rozdzialu ) or nil; str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil; elseif(czy_dalej_rozwazac_zakodowane)then naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil; str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil; end; --linia_nast=nil;linia_poprz=nil; m=m+1; return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany; end; ---- local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain(); return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany; end,tekst_rozwiniety_calego_artykulu; end; return p; rlabm6s6hu6w06iocnxvt2favr1rmd1 Moduł:StronicowyParser/SpisTreści 828 58945 557779 557755 2026-09-27T12:53:33Z Persino 2851 557779 Scribunto text/plain local p={}; local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2) local parametry_modul=require("Module:Parametry"); local ile=0; for i,tabela_rozdzial_artykulow2_i in pairs(tabela_rozdzial_artykulow2)do i=parametry_modul.TypeNumber(i) and i or nil; if((i)and(i>1))then ile=ile+#(tabela_rozdzial_artykulow2_i or {}); end; end; return ile; end; local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom,czy_nazwy_rozwiniete=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil); --- local numer_rodzaju_artykulu_poprz=numer_rodzaju_artykulu; if(numer_rodzaju_artykulu)then --mw.log(szablon,numer_rodzaju_artykulu,wliczaj_artykuly_tego_rozdzialu) numer_rodzaju_artykulu=(wliczaj_artykuly_tego_rozdzialu)and numer_rodzaju_artykulu or (numer_rodzaju_artykulu+6); end; --- --Rozdzialy początek local znaki_niedozwolone; local function ParametrPierwszy(tab_artykul,czy_niedozwolone) local artykul=tab_artykul[1]; local parametry=tab_artykul[2]; local naglowek=tab_artykul[3]; local tablica_przekierowania=tab_artykul[4]; ---- local znaki_niedozwolone; if(czy_niedozwolone)then znaki_niedozwolone=mw.ustring.match(artykul,"[|<>{}%[%]]"); end; ---- --if(artykul)then --artykul=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(artykul,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); --artykul=parametry_modul["Odstępy"]{[1]=artykul,[2]="tak",} --artykul=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](artykul); --end; ---- --if(parametry)then -- parametry=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(parametry,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) -- parametry=parametry_modul["Odstępy"]{[1]=parametry,[2]="tak",} -- parametry=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](parametry); --end; ---- --if(naglowek)then -- naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); -- naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",} -- naglowek=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](naglowek); --end; ---- tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul; return tab_artykul,znaki_niedozwolone,tablica_przekierowania; end; local parametry_modul=require("Module:Parametry"); ---- if((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz==1)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1; local czy_tablica=nil;local tablica_przekierowania=nil; if(tab_pozycja_elementow_w_spisie_rzeczy[1])then czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]); if(not czy_tablica)then --tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); --tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",} --tab_pozycja_elementow_w_spisie_rzeczy[1]=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tab_pozycja_elementow_w_spisie_rzeczy[1]); znaki_niedozwolone=mw.ustring.match(tab_pozycja_elementow_w_spisie_rzeczy[1],"[|<>{}%[%]]"); tablica_artykulow_zebranych={tab_pozycja_elementow_w_spisie_rzeczy[1],0,false,}; else tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true); local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil; if(not czy_inna_ksiazka)then czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]); else local artykul=tablica_przekierowania[2]; local parametry=tablica_przekierowania[3]; local naglowek=tablica_przekierowania[4]; czy_tablica=(artykul)and(parametry or naglowek); end; if(not czy_tablica)then local aktualny_artykul_ksiazki; if(not czy_inna_ksiazka)then aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1]; else aktualny_artykul_ksiazki=tablica_przekierowania[2] or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]); end; tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; else local aktualny_artykul_ksiazki; if(not czy_inna_ksiazka)then aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1][1]; else aktualny_artykul_ksiazki=tablica_przekierowania[2] or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]); end; if(tablica_artykulow_zebranych[1]~=aktualny_artykul_ksiazki)then tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; else tablica_artykulow_zebranych[3]=true; end; end; end; end; ---- local szablonowe_modul=require("Module:Szablonowe"); ---- if((not czy_nazwy_rozwiniete)and(tab_pozycja_elementow_w_spisie_rzeczy[2]))then local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); tab_pozycja_elementow_w_spisie_rzeczy[2]=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tab_pozycja_elementow_w_spisie_rzeczy[2],pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci); end; ---- if(znaki_niedozwolone)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"); end; end; local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false); local stara_nazwa_jednostki=nazwa_jednostki; if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end; --local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]]; linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); --local przekierowanie=pelna_nazwa_ksiazki..((nazwa_jednostki~="") and ("/"..nazwa_jednostki) or ""); --local strona=techniczne_modul.PrzekierowanieDoStrony(przekierowanie); --local strona=(tablica_przekierowania) local przekierowanie; if(--[[strona--]]tablica_przekierowania)then --nazwa_jednostki=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona); --przekierowanie=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](przekierowanie) przekierowanie=tablica_przekierowania[2]; if((czy_tablica)and(stara_nazwa_jednostki~=""))then przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,} or przekierowanie ) or nil; nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,}; local czy_w_tab=tablica_artykulow_zebranych[2]; local czy_wsadzac=tablica_artykulow_zebranych[3]; if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,}; --table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); tablica_artykulow_zebranych[2]=1; end; end; else nazwa_jednostki=tab_pozycja_elementow_w_spisie_rzeczy[1]; if((czy_tablica)and(stara_nazwa_jednostki~=""))then local czy_w_tab=tablica_artykulow_zebranych[2]; local czy_wsadzac=tablica_artykulow_zebranych[3]; if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,}; --table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); tablica_artykulow_zebranych[2]=1; end; end; end; local ile_dodac_do_poziomu_artykulu=tablica_artykulow_zebranych[2]; local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil; local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[2] or tablica_przekierowania or tab_pozycja_elementow_w_spisie_rzeczy[5] or tab_pozycja_elementow_w_spisie_rzeczy[6] or ile_dodac_do_poziomu_artykulu_lub_nil) and ({nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],ile_dodac_do_poziomu_artykulu_lub_nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or nazwa_jednostki),{#przedrostek_listy--[[+(ile_dodac_do_poziomu_artykulu and ile_dodac_do_poziomu_artykulu or 0)]],przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,(numer_rodzaju_artykulu>1) and (Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)) or nil,}; --table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); --mw.logObject(tab_stare,"TYTAN1") __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); --mw.logObject(tabela_rozdzial_artykulow2,"TYTAN2") elseif((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz>=2)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then if(tab_pozycja_elementow_w_spisie_rzeczy[1])then if(not parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]))then --tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",}; --tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); else tab_pozycja_elementow_w_spisie_rzeczy[1]=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],false); end; end; local szablonowe_modul=require("Module:Szablonowe"); if((not czy_nazwy_rozwiniete)and(tab_pozycja_elementow_w_spisie_rzeczy[2]))then local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); tab_pozycja_elementow_w_spisie_rzeczy[2]=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tab_pozycja_elementow_w_spisie_rzeczy[2],pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci); end; if(tab_pozycja_elementow_w_spisie_rzeczy[3])then tab_pozycja_elementow_w_spisie_rzeczy[3]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[3],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); tab_pozycja_elementow_w_spisie_rzeczy[3]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[3],[2]="tak",[4]="tak",}; end; if(tab_pozycja_elementow_w_spisie_rzeczy[4])then tab_pozycja_elementow_w_spisie_rzeczy[4]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[4],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); tab_pozycja_elementow_w_spisie_rzeczy[4]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[4],[2]="tak",[4]="tak",}; end; local wiki_modul=require("Module:Wiki"); ----- local numer_rodzaju_artykulow_w_nie_podreczniku=numer_rodzaju_artykulu+1; ----- if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku]={}; end; --local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]]; linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[1])and((tab_pozycja_elementow_w_spisie_rzeczy[2])or(tab_pozycja_elementow_w_spisie_rzeczy[3])or(tab_pozycja_elementow_w_spisie_rzeczy[4])or(tab_pozycja_elementow_w_spisie_rzeczy[5])or(tab_pozycja_elementow_w_spisie_rzeczy[6])))and({tab_pozycja_elementow_w_spisie_rzeczy[1],tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[3],tab_pozycja_elementow_w_spisie_rzeczy[4],tab_pozycja_elementow_w_spisie_rzeczy[5],nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or tab_pozycja_elementow_w_spisie_rzeczy[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,false,Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2),}; --table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); end; --mw.logObject(tabela_rozdzial_artykulow2,"TYTAN") return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych; end; function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local specjalne_modul=require("Module:Specjalne"); local szablonowe_modul=require("Module:Szablonowe"); local html_modul=require("Module:Html"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_na_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(rozdzial,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then ----- local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu; local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych; local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu; ----- local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; ---- local dodatek=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(dodatek)then return dodatek;end; local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then return (not tab_szablon_link_intelignetny[4]) and tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1]; else local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end; end; local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end; ---- if(szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu[nazwa_szablonu])then local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); return szablon; end; end); if(wynik)then return wynik;end; ---- local rozdzial_na_tekst=mw.ustring.gsub(szablon,"^{{[^{}|]*|([^{}|]*).*}}$","%1"); return rozdzial_na_tekst; elseif(obiekt=="NOWIKI")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif(obiekt=="PRE")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif(obiekt=="ŹRÓDŁO")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif((obiekt~="MATH")and(obiekt~="GALERIA")and(obiekt~="MAPAOBRAZU")and(obiekt~="INNEPRE"))then local rozdzial_na_tekst=specjalne_modul["UsuńKomentarze"](szablon); rozdzial_na_tekst=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńSzablonyStylów"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZnaczniki"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńKategorie"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńWywołaniaPlików"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńInterwiki"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst); return rozdzial_na_tekst; else return ""; end; end); ---- rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZbędneBiałeZnaki"](rozdzial_na_tekst); return rozdzial_na_tekst; end; function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH) local parametry_modul=require("Module:Parametry"); if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki))then return 0;end; local nazwy_modul=require("Module:Nazwy"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local pelna_nazwa_spisu_tresci=pelna_nazwa_ksiazki..((nazwa_spisu_tresci~="")and("/"..nazwa_spisu_tresci) or ""); --- local szablonowe_modul=require("Module:Szablonowe"); local pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci); --- local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_spisu_tresci); local przekierowanie_spisu_tresci=nil; local tab_nazwa_spisow_przekierowaniowych={}; --[[if(adres_ksiazki_glownego_spisu_tresci)then if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end; if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end; if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end; end;]] --if(adres_ksiazki_glownego_spisu_tresci)then -- local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; -- local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; -- local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end; -- end; if(strona)then local html_modul=require("Module:Html"); strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; local pelna_nazwa_ksiazki_przekierowania=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(pelna_nazwa_ksiazki_przekierowania~=pelna_nazwa_ksiazki)then return 0;end; pelna_nazwa_spisu_tresci=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); nazwa_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); przekierowanie_spisu_tresci=nazwa_spisu_tresci; ---- pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci); end; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); --local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_spisu_tresci,nil,true); local __FUNKCJA_PARAMETRY=nil; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,false,nil,nil,function(tekst_artykulu,pelna_nazwa_spisu_tresci_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end,__FUNKCJA_PARAMETRY); if(not tekst_rozwiniety_calego_artykulu)then return 0;end; if(__FUNKCJA_ZBIERANIA_DANYCH)then __FUNKCJA_ZBIERANIA_DANYCH(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; ---- local techniczne_modul=require("Module:Techniczne"); ---- local tabelalisty2=nil; local licencja_z_autorem=true; local tabela_artykulow=nil; local tabela_licencji_spisu_tresci=nil; local parametry_modul=require("Module:Parametry"); local html_modul=require("Module:Html"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy; local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy; local szablony_kompletowania_stron_woluminu=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu; local szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji; local szablony_ozdobne_stron_woluminu=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") --[[local pelna_nazwa_spisu_tresci_wzor="^("..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or "") ..techniczne_modul["WzórNazwyStrony"](((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki) ..((nazwa_spisu_tresci~="")and ("/"..nazwa_spisu_tresci) or "") .."(/[Ss][Pp][Ii][Ss][%s_]+[Tt][Rr][Ee][ŚśSs][Cc][Ii]))$";]] --local tablica_analizy_obiektow_strony_dany_modul={}; --local tablica_danych_parametrow_szablonu_strony={}; local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,--[[function(pelna_nazwa_szablonu,tabela_modyfikatorow) local pelna_nazwa_spisu_tresci,strona_ze_spisem_tresci=mw.ustring.match(pelna_nazwa_szablonu,pelna_nazwa_spisu_tresci_wzor); if(pelna_nazwa_spisu_tresci and strona_ze_spisem_tresci)then pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,nil,true); if(tekst)then ---- if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end; if(not tablica_ksiazki.spis_tresci[nazwa_spisu_tresci])then tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]={};end local tablica_spis_tresci=tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]; tablica_spis_tresci.tekst=tekst; tablica_spis_tresci.adres_wzgledny_spisu_tresci=strona_ze_spisem_tresci; ---- return tekst; end; end; end]]nil,function(str,pelna_nazwa_strony,tablica_analizy_dany_modul,czy_naglowek) local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod) if(obiekt=="SZABLON")then ---- local bez_kodow=not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()); if(bez_kodow)then return;end; ---- local function PomijajLinkiOrazLicencje(szablon) return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]; if(czy_szablony_licencji)then return true;end; local czy_szablony_ozdobne=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu[nazwa_szablonu]; if(czy_szablony_ozdobne)then return true;end; --local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); --local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,nazwa_szablonu); --if(wynik)then return wynik;end; ---- if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]))then return true;end; local tab_wyzyskane_od_nazwy_szablonu=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_wyzyskane_od_nazwy_szablonu)then return true;end; end); end; ---- local CzySzablonLinkLubLicencja=function(szablon) local ile_szablon_linki_lub_licencje=0; local _,ile=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("(SZABLON)"), function(obiekt,kod) kod=tonumber(kod); local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local wynik=PomijajLinkiOrazLicencje(szablon); if(wynik)then ile_szablon_linki_lub_licencje=ile_szablon_linki_lub_licencje+1;end; return nil; end); if((ile>0)and(ile_szablon_linki_lub_licencje>0))then return true;end; end; local bez_kodow_linkow_wewnetrznych=( not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("LINK[WZ]")) and not CzySzablonLinkLubLicencja(szablon) ) or not mw.ustring.match(szablon,"\n([#:*;]+)[^%S\n]*([%w%p]*)[^%S\n]*([^\n]+)") or not mw.ustring.match(szablon,"\n([#:*;]*)[^%S\n]*([%w%p]+)[^%S\n]*([^\n]+)"); if(bez_kodow_linkow_wewnetrznych)then return;end; local wynik=PomijajLinkiOrazLicencje(szablon); if(wynik)then return;end; ----- return ""; --[[elseif(obiekt=="WIKITABELA")then szablon=mw.ustring.match(szablon,"^{|(.-)|}$"); szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|[%-%+][^%S\n]+[^|\n]*","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|%-","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|%+","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|","\n\n"); return szablon;]] end; return; end; if(not czy_naglowek)then str=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_strony,tablica_analizy_dany_modul,function(szablon,obiekt,kod) local wynik=FunkcjaIteratoraTekstuZakodowego(szablon,obiekt,kod); if(wynik)then return wynik;end; return nil,true; end); return str; end; return str; end,function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end); ---- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_jakie_nie_rozdzialy=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu; local jakie_nie_rozdzialy=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_nie_rozdzialy); local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_nie_rozdzialy,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); local numer_rozdzialu_w_ksiazce=1; local parametry_modul=require("Module:Parametry"); local html_modul=require("Module:Html"); local szablonowe_modul=require("Module:Szablonowe"); local tab_dozwolonych_szablonow_z_elementami_spisu_artykulow=stronicowyparser_obiekty_modul.tab_dozwolonych_szablonow_z_elementami_spisu_artykulow; local czy_jest_spis_tresci=nil; local poziom_spisu_tresci=nil; local dalej_nie_rozwazaj_spis_tresci=nil; local wliczaj_artykuly_tego_rozdzialu=nil; local specjalne_modul=require("Module:Specjalne"); local tablica_artykulow_zebranych={}; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); ---- --local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu; --local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu; ---- local maksymalny_rozmiar_rozdzialu_zerowego=50; local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany) --rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1"); --if(poziom_rozdzialu)then -- text=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(text,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); --end; if(not tabela_artykulow)then tabela_artykulow={};end; local spreparowany_uzyskany_tekst_rozdzialu=nil; ---- local tabela_rozdzial_artykulow; if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then tabela_artykulow[numer_rozdzialu_w_ksiazce]={}; ---- tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce]; ---- local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,}; spreparowany_uzyskany_tekst_rozdzialu=rozdzial_na_tekst; end; local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]); if(czy_spis_rzeczy_napis_wprowadzenia_tekstu)then poziom_spisu_tresci=poziom_rozdzialu; czy_jest_spis_tresci=true; elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then if((((poziom_spisu_tresci>0)and(poziom_rozdzialu>0))or((poziom_spisu_tresci<=0)and(poziom_rozdzialu<=0)))and(math.abs(poziom_spisu_tresci or 0)<math.abs(poziom_rozdzialu)))then wliczaj_artykuly_tego_rozdzialu=true; else wliczaj_artykuly_tego_rozdzialu=nil; dalej_nie_rozwazaj_spis_tresci=true; end; end; local function iteratorTekstuNaglowka() local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)"; local iter=nil; local tak=nil; local czy_rozdzial=nil; return function() if(not czy_rozdzial)then if((poziom_rozdzialu or 0)>0)then if(not iter)then iter=mw.ustring.gmatch(rozdzial,"([^\n]+)"); end; local wartosc=iter(); if(not wartosc)then czy_rozdzial=true; iter=nil; else return "","",wartosc,true; end; else czy_rozdzial=true; end; end; local function dane_iteratora() if(not iter)then iter=mw.ustring.gmatch(text,"\n"..re); end; local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=iter(); if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci); return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false; else return nil; end; end; if(not tak)then tak=true; local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=mw.ustring.match(text,"^"..re); if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci); return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false; else return dane_iteratora(); end; end; return dane_iteratora(); end; end; ---- local function LiniaArtykulow(linia) local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod=iter(); if((not szablon) or (not kod) or(not obiekt))then return {};end; local function SzablonAnalizujKompletnosc(szablon) ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- return stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu[nazwa_szablonu]; end); return wynik; end; ----- local tak_pierwsze=((obiekt=="SZABLON") and SzablonAnalizujKompletnosc(szablon) or nil); ----- for szablon,obiekt,kod in iter do if(obiekt=="SZABLON")then local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local tak_drugie=SzablonAnalizujKompletnosc(szablon); if(tak_pierwsze)then if(tak_drugie)then linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")(%s*)("..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")","%1,%2%3"); end; else if(tak_drugie)then linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")(%s*)(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")","%1,%2%3"); end; end; end; end; local tabela_linii_artykulow=mw.text.split(linia,"%s*,%s*",false); for i=1,#tabela_linii_artykulow,1 do tabela_linii_artykulow[i]=mw.ustring.gsub(tabela_linii_artykulow[i],"&#"..mw.ustring.byte(',')..";",","); end; return tabela_linii_artykulow; end; local iterator=iteratorTekstuNaglowka(); local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial])); for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do local nie_pomijaj_tego_rozdzialu=false; if((not przedrostek_listy)or(#przedrostek_listy==0))then local rozdzial,czy_z_kropka=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(((rozdzial)and(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego))or(not rozdzial))then nie_pomijaj_tego_rozdzialu=true; end; else local czy_pominac_ten_rozdzial_jako_linie=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrostek_listy,linia,true,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(not czy_pominac_ten_rozdzial_jako_linie)then nie_pomijaj_tego_rozdzialu=true; else nie_pomijaj_tego_rozdzialu=false; end; end; if(nie_pomijaj_tego_rozdzialu)then local ile=0; local linia_rozwazana=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(linia,nil ,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod--[[,czy_sam_siebie]]) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- local czy_link=linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu] or inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu] or stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu ,tablica_danych_parametrow_szablonu_strony,kod); local czy_szablon=czy_link or szablony_kompletowania_stron_woluminu[nazwa_szablonu] or szablony_licencji[nazwa_szablonu] --or szablony_ozdobne_stron_woluminu[nazwa_szablonu]; if(czy_link)then ile=ile+1;end; return czy_szablon,obiekt,kod; end); elseif(obiekt=="LINKW")then if(specjalne_modul["CzyLinkWewnętrzny"](szablon))then ile=ile+1; return true,obiekt,kod; end; elseif(obiekt=="LINKZ")then ile=ile+1; return true,obiekt,kod; end; end); ---- local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$"); local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$") or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$")))) or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil); ---- local nowa_linia=false; local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana) return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare) --if((czy_spis_rzeczy_napis_wprowadzenia_tekstu)and(numer_podtablicy_w_tablicy>2))then return;end; if((czy_rozdzial_centrowany)and(w_rozdziale)and(czy_linia_uwzgledniana)and(tab_stare[2])and(tab_stare[2][1]))then tab_stare[2][1]=tab_stare[2][1]+1; end; if(not w_rozdziale)then local function CzyZaliczac() return ((not mw.ustring.match(linia,"^%w+%p+")) and mw.ustring.match(linia,"^%s*'*%s*%w+")); --or mw.ustring.match(linia,"^%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("LINKZ")); end; if(nowa_linia)then tab_stare[2][4]=true; table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); elseif(((poziom_rozdzialu)or(#(przedrostek_listy or "")>0))and((ile>1)or(CzyZaliczac())))then nowa_linia=true; numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1; tabela_artykulow[numer_rozdzialu_w_ksiazce]={}; tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce]; ---- local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,}; tab_stare[2][4]=true; tab_stare[6]=(numer_podtablicy_w_tablicy>2) and 0 or nil; tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy]={}; table.insert(tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy],tab_stare); else table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); end; else table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); end; end; end; local function AnalizaLiniiObiekty(linia_rozwazana) local tab_linia=LiniaArtykulow(linia_rozwazana); for k=1,#tab_linia,1 do local iterator2=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tab_linia[k],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); local tab_nieobslugiwane=nil; for szablon,obiekt,kod in iterator2 do local czy_szablon=(obiekt=="SZABLON");local czy_link=((obiekt=="LINKW")or(obiekt=="LINKZ")); if(czy_szablon or czy_link)then local przerwij=nil; if(czy_szablon)then ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu ,tabela_modyfikatorow) ---- --local przerwij=nil; local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then if(tabela_spisu[1]==true)then --local tabela_parametrow_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil ,tablica_danych_parametrow_szablonu_strony,kod); local numer_link=tabela_spisu["numer_link"]; for name,value in pairs(tabela_parametrow_szablonu)do if(name~=numer_link)then local kod_w_nie_obslugiwanych=tabela_parametrow_szablonu[name]; local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(kod_w_nie_obslugiwanych,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); if(not tab_nieobslugiwane)then tab_nieobslugiwane={};end; for szablon,obiekt,kod in iter do if(not tab_nieobslugiwane[obiekt])then tab_nieobslugiwane[obiekt]={};end; tab_nieobslugiwane[obiekt][kod]=true; end; end; end; local tyt=tabela_parametrow_szablonu[numer_link]; przedrostek_listy=""; tekstowy_przedrostek,szablon=mw.ustring.match(tyt,"^'*[^%S\n]*([%d%.]*)[^%S\n]*([^\n]-)'*$"); przerwij=true; else przedrostek_listy=""; tekstowy_przedrostek=tabela_parametrow_szablonu[tabela_spisu["numer"]]; szablon=tabela_parametrow_szablonu[tabela_spisu["link"]]; przerwij=true; end; end; end); end; --[[if(przerwij)then local iterator3=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon2,obiekt2,kod2 in iterator3 do if(obiekt2=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon2,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod2); local tabela_linku=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_linku)then szablon=szablon2; break; end; elseif(obiekt2=="LINKW")then szablon=szablon2; break; end; end; end;]] local pozycja_artykulu=nil;local nazwa=nil; local tab_pozycja_elementow_w_spisie_rzeczy;local numer_rodzaju_artykulu_poprz;local id;local parametry_szablonu;local kom; local link_szablon=nil; local czy_obslugiwane=nil; local CzyObslugiwane=function() local wartosc=((tab_nieobslugiwane[obiekt])and(tab_nieobslugiwane[obiekt][kod])); czy_obslugiwane=wartosc; return (not wartosc); end; if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then local linia_artykokow=tab_linia[k]; numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]); --mw.log() if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil; end; --mw.logObject(tabela_rozdzial_artykulow) else link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil; end; --[[if(przerwij)then break;end;]] if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then --- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu_licencji,nazwa_szablonu_licencji,tabela_modyfikatorow_licencji) if(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu_licencji])then if(tabela_parametrow_szablonu_licencji)then local autor=tabela_parametrow_szablonu_licencji["Autor"]; local szkoly=tabela_parametrow_szablonu_licencji["Ukończone szkoły"]; local email=tabela_parametrow_szablonu_licencji["Email"]; local dotyczy=tabela_parametrow_szablonu_licencji["Dotyczy"]; local licencjonowanie=tabela_parametrow_szablonu_licencji["Licencjonowanie"]; local umowa_prawna=tabela_parametrow_szablonu_licencji["Umowa prawna"]; local konsekwencje=tabela_parametrow_szablonu_licencji["Konsekwencje"]; local frame=mw.getCurrentFrame(); if(autor~=nil)then autor=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(autor,pelna_nazwa_spisu_tresci ,tablica_analizy_obiektow_strony_dany_modul);} end; if(szkoly~=nil)then szkoly=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szkoly,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(email~=nil)then email=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(email,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(dotyczy~=nil)then dotyczy=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(dotyczy,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(licencjonowanie~=nil)then licencjonowanie=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(licencjonowanie,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(umowa_prawna~=nil)then umowa_prawna=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(umowa_prawna,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(konsekwencje~=nil)then konsekwencje=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(konsekwencje,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(autor~=nil)then tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje}; licencja_z_autorem=false; end; return true; 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); if(wynik)then break;end; end; end; end; end; end; if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end; end; end; numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1; end; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ---rozdzial_tab[1]=rozdzial;rozdzial_tab[2]=linia rozdziału AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany); if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil); end; --mw.logObject(tabela_artykulow); if(czy_artykul_korzystany)then return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci; else return tabela_artykulow,nil,przekierowanie_spisu_tresci; end; end; function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow) local parametry_modul=require("Module:Parametry"); if(not parametry_modul.TypeTable(tabela_artykulow))then return;end; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); for _,tab_lista in ipairs(tabela_artykulow)do if(tab_lista[2])then for _,artykul_w_bazie_element in ipairs(tab_lista[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(jakie_spisy_tresci[artykul_bez_naglowka_w_bazie])then return artykul_bez_naglowka_w_bazie; end; end; end; end; end; function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH) local adres_ksiazki_glownego_spisu_tresci=nil; local techniczne_modul=require("Module:Techniczne"); local nazwy_modul=require("Module:Nazwy"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local ile2,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki,tekst=true,}; if(ile2>0)then local strona_spisu_tresci=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki); if(strona_spisu_tresci)then local html_modul=require("Module:Html"); strona_spisu_tresci=html_modul.DecodeHtml(strona_spisu_tresci,true); local tabela_nazw={}; local nazwa_przestrzeni2=nazwy_modul["NAZWAPRZESTRZENI"](strona_spisu_tresci,tabela_nazw); local nazwa_przestrzeni_ksiazki2=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_spisu_tresci,tabela_nazw); local nazwa_ksiazki2=(nazwa_przestrzeni_ksiazki2=="") and nazwy_modul["NAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw) or nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw); ---- if((nazwa_przestrzeni~=nazwa_przestrzeni2)or(nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki2)or(nazwa_ksiazki~=nazwa_ksiazki2))then if(((nazwa_przestrzeni2==nazwy_np_modul.Main)or(nazwa_przestrzeni2==nazwy_np_modul.Wikijunior))or(((nazwa_przestrzeni2==nazwy_np_modul.Wikibooks)or(nazwa_przestrzeni2==nazwy_np_modul.User))and(nazwa_przestrzeni_ksiazki2~="")))then ---- adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,}; local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil; if((wynik or 0)==1)then return 1; end; ---- nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki=nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2; pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); else return 2; end; end; end; end; local parametry_modul=require("Module:Parametry"); local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer) if((parametry_modul.TypeTable(tablista_artykulow)) and parametry_modul["CzySąElementyTablicy"](tablista_artykulow))then local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci); local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci; ---- local przekierowanie_strona=czy_spis_tresci_table and spis_tresci[2] or nil; local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,}; --- if(not tablista_artykulow[1][1][2][1])then for numer,tab_lista in ipairs(tablista_artykulow[1])do if(numer>1)then tab_element[numer]=tab_lista; end; end; table.remove(tablista_artykulow,1); end; --- for _,tab_lista in ipairs(tablista_artykulow)do local numer_rozdzialu=tab_lista[1][2][1]; local czy_rozdzial_centrowany=tab_lista[1][2][4]; if(numer_rozdzialu>0)then tab_lista[1][2][1]=numer_rozdzialu+1; end; if(czy_rozdzial_centrowany)then break;end; end; --- numer=numer+1; --- --if(not tablista_artykulow)then tablista_artykulow={};end; ---- table.insert(tablista_artykulow,1,tab_element); if(spis_tresci)then if(not tab_inne_spisy)then tab_inne_spisy={};end; table.insert(tab_inne_spisy,spis_tresci); if(not tablista_artykulow[1][2])then tablista_artykulow[1][2]={};end; local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,}; table.insert(tablista_artykulow[1][2],1,tab_stare); end; end; return tablista_artykulow,tab_inne_spisy,numer; end; local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer) --mw.logObject(tablista_artykulow,"TYTAn123fhh"); local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH); --mw.logObject(tablista_artykulow_iter,spis_tresci); ---- if((tablista_artykulow_iter)and(parametry_modul.TypeTable(tablista_artykulow_iter)))then tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer); for _,value in ipairs(tablista_artykulow_iter)do if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end; table.insert(tablista_artykulow,value); end; end; return tablista_artykulow,tab_inne_spisy,numer; end; local function SpisRzeczy(tabela_artykulow,tab_inne_spisy) local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow) if(artykul_spisu_rzeczy)then local numer=1; tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer); tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer); end; return tabela_artykulow,tab_inne_spisy; end; local adres_ustawien=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "").."NawigacjaSpecjalna/Nawigacja/"..pelna_nazwa_ksiazki; ---- adres_ustawien=techniczne_modul.PrzekierowanieDoStrony(adres_ustawien) or adres_ustawien; ---- local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,}; if(not tekst)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji={}; local szablonowe_modul=require("Module:Szablonowe"); local tekst_zakodowany=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,nil,nil); local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty'); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zakodowany,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji); local szablon_uklad_autonawigacji; local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={}; local tabela_parametrow_szablonu_uklad_autonawigacji; local nazwa_szablonu_uklad_autonawigacji; local tabela_modyfikatorow_uklad_autonawigacji; local adres_ustawien_szablonowy=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](adres_ustawien,nil,nil); for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,kod,adres_ustawien_szablonowy,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) tabela_parametrow_szablonu_uklad_autonawigacji=tabela_parametrow_szablonu; nazwa_szablonu_uklad_autonawigacji=nazwa_szablonu; tabela_modyfikatorow_uklad_autonawigacji=tabela_modyfikatorow; if(nazwa_szablonu==stronicowyparser_obiekty_modul.uklad_autonawigacji)then szablon_uklad_autonawigacji=szablon; return true; end; end); if(wynik)then break;end; end; end; if(not szablon_uklad_autonawigacji)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; --local tabela_parametrow_szablonu_uklad_autonawigacji,nazwa_szablonu_uklad_autonawigacji,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon_uklad_autonawigacji); if(not tabela_parametrow_szablonu_uklad_autonawigacji)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local parametry_modul=require("Module:Parametry"); local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"]; ---- local html_modul=require("Module:Html"); ---- local czy_automat_manualny=(automat_manualny) and parametry_modul.CzyTak(automat_manualny) or nil; if(czy_automat_manualny)then local sub_nazwa_spis_tresci; local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"]; spis_tresci=spis_tresci and html_modul.DecodeHtml(spis_tresci,true) or nil; if(parametry_modul.CzyTak(spis_tresci))then local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local pelna_nazwa_ksiazki_spisu_tresci=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci,tabela_nazw); if(pelna_nazwa_ksiazki_spisu_tresci==pelna_nazwa_ksiazki)then sub_nazwa_spis_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci,tabela_nazw); else sub_nazwa_spis_tresci=""; end; else sub_nazwa_spis_tresci=""; end; local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local frame=mw.getCurrentFrame(); for name,value in pairs(tabela_parametrow_szablonu_uklad_autonawigacji)do tabela_parametrow_szablonu_uklad_autonawigacji[name]=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(value,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)|([^{}]-)}}}","{{(((}}%1{{!}}%2{{)))}}"); szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)}}}","{{(((}}%1{{)))}}"); return szablon; end; end),}; end; local nazwy_modul=require("Module:Nazwy"); local bez_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez spisów treści"]; local czy_bez_spisow_tresci=(bez_spisow_tresci) and parametry_modul.CzyTak(bez_spisow_tresci) or nil; local bez_analizy_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez analizy spisów treści"]; local czy_bez_analizy_spisow_tresci=(bez_analizy_spisow_tresci) and parametry_modul.CzyTak(bez_analizy_spisow_tresci) or nil; ---- local tab_inne_spisy;local nazwa_glownego_spisu; local tablista_artykulow; local licencja; local numer=1; ---- --local pelna_nazwa_spisu_tresci=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); ---- local tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;local tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;local przekierowanie_spisu_tresci; if(not czy_bez_spisow_tresci)then local spis_tresci_main=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"]; if(spis_tresci_main)then spis_tresci_main=html_modul.DecodeHtml(spis_tresci_main,true); --- spis_tresci_main=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci_main,[2]=pelna_nazwa_ksiazki,}; end; local tabela_nazw={}; local pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci=parametry_modul.CzyTak(spis_tresci_main) and nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci_main,tabela_nazw) or pelna_nazwa_ksiazki; if(pelna_nazwa_ksiazki~=pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci)then return 0; end; nazwa_glownego_spisu=parametry_modul.CzyTak(spis_tresci_main) and nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci_main,tabela_nazw) or ""; else nazwa_glownego_spisu=""; end; if((not czy_bez_spisow_tresci)and(not czy_bez_analizy_spisow_tresci))then tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); if(przekierowanie_spisu_tresci)then nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,}; end; if((not tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika)or(tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika==0))then return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika; end; local IteratorSpisTresci=function() local liczba=1; return function() local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba]; liczba=liczba+1; return spis_tresci; end; end; local iter=IteratorSpisTresci(); tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika; licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika; tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer); local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow); if(artykul_spisu_rzeczy)then tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer); end; for spis_tresci in iter do --- if(not parametry_modul.CzyTak(spis_tresci))then return;end; spis_tresci=html_modul.DecodeHtml(spis_tresci,true); spis_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci,[2]="",}; --- tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer); end; end; ---- local IteratorFun=function() local liczba=1; local STRONA=function(liczba)return liczba*2-1;end; local NAZWA=function(liczba)return liczba*2;end; return function() local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)]; local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)]; liczba=liczba+1; return strona,nazwa; end; end; local tablica_stron_ksiazki={}; local tablica_stron_inne={}; local iter=IteratorFun(); local ksiazkawe_modul=require("Module:Książkowe"); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local dodatkowe_artykuly=nil; local tablica_artykulow_zebranych={}; local tab_nazwa_spisow_przekierowaniowych={}; local dodatkowe_artykuly=nil; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne") local tabela_rozdzial_artykulow=nil; ---- local pelna_nazwa_spisu_tresci=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci); ---- --local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={}; ---- for strona,nazwa in iter do local function ZbieranieDanychStronZAutonawigacji() if(not parametry_modul.CzyTak(strona))then return;end; strona=html_modul.DecodeHtml(strona,true); nazwa=parametry_modul.CzyTak(nazwa) and html_modul.DecodeHtml(nazwa,true) or nil; if(not dodatkowe_artykuly)then if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end; table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,}); tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow]; end; --- strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,}; local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare) if(not dodatkowe_artykuly)then dodatkowe_artykuly={};end; ---- local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]); local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1]; local czy_w_podreczniku=tab_stare[5]; local kod_jezyka_koncowy=czy_table_baza_artykulu and tab_stare[1][5] or nil; local kod_projektu_koncowy=czy_table_baza_artykulu and tab_stare[1][6] or nil; ---- table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,}); ---- table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare); end; local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy; numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,true,{strona,nazwa,},nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",pelna_nazwa_ksiazki,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,tab_nazwa_spisow_przekierowaniowych,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"); end; ZbieranieDanychStronZAutonawigacji(); end; ---- return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci; end; return p; kr8w0mayqrrrg2pd49wpm1kalxvnoaf 557804 557779 2026-09-28T08:00:20Z Persino 2851 557804 Scribunto text/plain local p={}; local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2) local parametry_modul=require("Module:Parametry"); local ile=0; for i,tabela_rozdzial_artykulow2_i in pairs(tabela_rozdzial_artykulow2)do i=parametry_modul.TypeNumber(i) and i or nil; if((i)and(i>1))then ile=ile+#(tabela_rozdzial_artykulow2_i or {}); end; end; return ile; end; local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom,czy_nazwy_rozwiniete=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil); --- local numer_rodzaju_artykulu_poprz=numer_rodzaju_artykulu; if(numer_rodzaju_artykulu)then --mw.log(szablon,numer_rodzaju_artykulu,wliczaj_artykuly_tego_rozdzialu) numer_rodzaju_artykulu=(wliczaj_artykuly_tego_rozdzialu)and numer_rodzaju_artykulu or (numer_rodzaju_artykulu+6); end; --- --Rozdzialy początek local znaki_niedozwolone; local function ParametrPierwszy(tab_artykul,czy_niedozwolone) local artykul=tab_artykul[1]; local parametry=tab_artykul[2]; local naglowek=tab_artykul[3]; local tablica_przekierowania=tab_artykul[4]; ---- local znaki_niedozwolone; if(czy_niedozwolone)then znaki_niedozwolone=mw.ustring.match(artykul,"[|<>{}%[%]]"); end; ---- --if(artykul)then --artykul=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(artykul,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); --artykul=parametry_modul["Odstępy"]{[1]=artykul,[2]="tak",} --artykul=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](artykul); --end; ---- --if(parametry)then -- parametry=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(parametry,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) -- parametry=parametry_modul["Odstępy"]{[1]=parametry,[2]="tak",} -- parametry=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](parametry); --end; ---- --if(naglowek)then -- naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); -- naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",} -- naglowek=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](naglowek); --end; ---- tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul; return tab_artykul,znaki_niedozwolone,tablica_przekierowania; end; local parametry_modul=require("Module:Parametry"); ---- if((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz==1)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1; local czy_tablica=nil;local tablica_przekierowania=nil; if(tab_pozycja_elementow_w_spisie_rzeczy[1])then czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]); if(not czy_tablica)then --tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); --tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",} --tab_pozycja_elementow_w_spisie_rzeczy[1]=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tab_pozycja_elementow_w_spisie_rzeczy[1]); znaki_niedozwolone=mw.ustring.match(tab_pozycja_elementow_w_spisie_rzeczy[1],"[|<>{}%[%]]"); tablica_artykulow_zebranych={tab_pozycja_elementow_w_spisie_rzeczy[1],0,false,}; else tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true); local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil; if(not czy_inna_ksiazka)then czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]); else local artykul=tablica_przekierowania[2]; local parametry=tablica_przekierowania[3]; local naglowek=tablica_przekierowania[4]; czy_tablica=(artykul)and(parametry or naglowek); end; if(not czy_tablica)then local aktualny_artykul_ksiazki; if(not czy_inna_ksiazka)then aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1]; else aktualny_artykul_ksiazki=tablica_przekierowania[2] or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]); end; tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; else local aktualny_artykul_ksiazki; if(not czy_inna_ksiazka)then aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1][1]; else aktualny_artykul_ksiazki=tablica_przekierowania[2] or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]); end; if(tablica_artykulow_zebranych[1]~=aktualny_artykul_ksiazki)then tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; else tablica_artykulow_zebranych[3]=true; end; end; end; end; ---- local szablonowe_modul=require("Module:Szablonowe"); ---- if((not czy_nazwy_rozwiniete)and(tab_pozycja_elementow_w_spisie_rzeczy[2]))then local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); tab_pozycja_elementow_w_spisie_rzeczy[2]=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tab_pozycja_elementow_w_spisie_rzeczy[2],pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci); end; ---- if(znaki_niedozwolone)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"); end; end; local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false); local stara_nazwa_jednostki=nazwa_jednostki; if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end; --local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]]; linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); --local przekierowanie=pelna_nazwa_ksiazki..((nazwa_jednostki~="") and ("/"..nazwa_jednostki) or ""); --local strona=techniczne_modul.PrzekierowanieDoStrony(przekierowanie); --local strona=(tablica_przekierowania) local przekierowanie; if(--[[strona--]]tablica_przekierowania)then --nazwa_jednostki=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona); --przekierowanie=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](przekierowanie) przekierowanie=tablica_przekierowania[2]; if((czy_tablica)and(stara_nazwa_jednostki~=""))then przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,} or przekierowanie ) or nil; nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,}; local czy_w_tab=tablica_artykulow_zebranych[2]; local czy_wsadzac=tablica_artykulow_zebranych[3]; if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,}; --table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); tablica_artykulow_zebranych[2]=1; end; end; else nazwa_jednostki=tab_pozycja_elementow_w_spisie_rzeczy[1]; if((czy_tablica)and(stara_nazwa_jednostki~=""))then local czy_w_tab=tablica_artykulow_zebranych[2]; local czy_wsadzac=tablica_artykulow_zebranych[3]; if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,}; --table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); tablica_artykulow_zebranych[2]=1; end; end; end; local ile_dodac_do_poziomu_artykulu=tablica_artykulow_zebranych[2]; local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil; local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[2] or tablica_przekierowania or tab_pozycja_elementow_w_spisie_rzeczy[5] or tab_pozycja_elementow_w_spisie_rzeczy[6] or ile_dodac_do_poziomu_artykulu_lub_nil) and ({nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],ile_dodac_do_poziomu_artykulu_lub_nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or nazwa_jednostki),{#przedrostek_listy--[[+(ile_dodac_do_poziomu_artykulu and ile_dodac_do_poziomu_artykulu or 0)]],przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,(numer_rodzaju_artykulu>1) and (Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)) or nil,}; --table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); --mw.logObject(tab_stare,"TYTAN1") __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); --mw.logObject(tabela_rozdzial_artykulow2,"TYTAN2") elseif((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz>=2)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then if(tab_pozycja_elementow_w_spisie_rzeczy[1])then if(not parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]))then --tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",}; --tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); else tab_pozycja_elementow_w_spisie_rzeczy[1]=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],false); end; end; local szablonowe_modul=require("Module:Szablonowe"); if((not czy_nazwy_rozwiniete)and(tab_pozycja_elementow_w_spisie_rzeczy[2]))then local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); tab_pozycja_elementow_w_spisie_rzeczy[2]=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tab_pozycja_elementow_w_spisie_rzeczy[2],pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci); end; if(tab_pozycja_elementow_w_spisie_rzeczy[3])then tab_pozycja_elementow_w_spisie_rzeczy[3]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[3],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); tab_pozycja_elementow_w_spisie_rzeczy[3]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[3],[2]="tak",[4]="tak",}; end; if(tab_pozycja_elementow_w_spisie_rzeczy[4])then tab_pozycja_elementow_w_spisie_rzeczy[4]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[4],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); tab_pozycja_elementow_w_spisie_rzeczy[4]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[4],[2]="tak",[4]="tak",}; end; local wiki_modul=require("Module:Wiki"); ----- local numer_rodzaju_artykulow_w_nie_podreczniku=numer_rodzaju_artykulu+1; ----- if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku]={}; end; --local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]]; linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[1])and((tab_pozycja_elementow_w_spisie_rzeczy[2])or(tab_pozycja_elementow_w_spisie_rzeczy[3])or(tab_pozycja_elementow_w_spisie_rzeczy[4])or(tab_pozycja_elementow_w_spisie_rzeczy[5])or(tab_pozycja_elementow_w_spisie_rzeczy[6])))and({tab_pozycja_elementow_w_spisie_rzeczy[1],tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[3],tab_pozycja_elementow_w_spisie_rzeczy[4],tab_pozycja_elementow_w_spisie_rzeczy[5],nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or tab_pozycja_elementow_w_spisie_rzeczy[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,false,Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2),}; --table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); end; --mw.logObject(tabela_rozdzial_artykulow2,"TYTAN") return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych; end; function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local specjalne_modul=require("Module:Specjalne"); local szablonowe_modul=require("Module:Szablonowe"); local html_modul=require("Module:Html"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_na_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(rozdzial,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then ----- local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu; local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych; local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu; ----- local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; ---- local dodatek=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(dodatek)then return dodatek;end; local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then return (not tab_szablon_link_intelignetny[4]) and tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1]; else local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end; end; local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end; ---- if(szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu[nazwa_szablonu])then local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); return szablon; end; end); if(wynik)then return wynik;end; ---- local rozdzial_na_tekst=mw.ustring.gsub(szablon,"^{{[^{}|]*|([^{}|]*).*}}$","%1"); return rozdzial_na_tekst; elseif(obiekt=="NOWIKI")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif(obiekt=="PRE")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif(obiekt=="ŹRÓDŁO")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif((obiekt~="MATH")and(obiekt~="GALERIA")and(obiekt~="MAPAOBRAZU")and(obiekt~="INNEPRE"))then local rozdzial_na_tekst=specjalne_modul["UsuńKomentarze"](szablon); rozdzial_na_tekst=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńSzablonyStylów"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZnaczniki"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńKategorie"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńWywołaniaPlików"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńInterwiki"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst); return rozdzial_na_tekst; else return ""; end; end); ---- rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZbędneBiałeZnaki"](rozdzial_na_tekst); return rozdzial_na_tekst; end; function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH) local parametry_modul=require("Module:Parametry"); if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki))then return 0;end; local nazwy_modul=require("Module:Nazwy"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local pelna_nazwa_spisu_tresci=pelna_nazwa_ksiazki..((nazwa_spisu_tresci~="")and("/"..nazwa_spisu_tresci) or ""); --- local szablonowe_modul=require("Module:Szablonowe"); local pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci); --- local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_spisu_tresci); local przekierowanie_spisu_tresci=nil; local tab_nazwa_spisow_przekierowaniowych={}; --[[if(adres_ksiazki_glownego_spisu_tresci)then if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end; if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end; if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end; end;]] --if(adres_ksiazki_glownego_spisu_tresci)then -- local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; -- local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; -- local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end; -- end; if(strona)then local html_modul=require("Module:Html"); strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; local pelna_nazwa_ksiazki_przekierowania=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(pelna_nazwa_ksiazki_przekierowania~=pelna_nazwa_ksiazki)then return 0;end; pelna_nazwa_spisu_tresci=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); nazwa_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); przekierowanie_spisu_tresci=nazwa_spisu_tresci; ---- pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci); end; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); --local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_spisu_tresci,nil,true); local __FUNKCJA_PARAMETRY=nil; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,false,nil,nil,function(tekst_artykulu,pelna_nazwa_spisu_tresci_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end,__FUNKCJA_PARAMETRY); if(not tekst_rozwiniety_calego_artykulu)then return 0;end; if(__FUNKCJA_ZBIERANIA_DANYCH)then __FUNKCJA_ZBIERANIA_DANYCH(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; ---- local techniczne_modul=require("Module:Techniczne"); ---- local tabelalisty2=nil; local licencja_z_autorem=true; local tabela_artykulow=nil; local tabela_licencji_spisu_tresci=nil; local parametry_modul=require("Module:Parametry"); local html_modul=require("Module:Html"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy; local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy; local szablony_kompletowania_stron_woluminu=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu; local szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji; local szablony_ozdobne_stron_woluminu=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") --[[local pelna_nazwa_spisu_tresci_wzor="^("..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or "") ..techniczne_modul["WzórNazwyStrony"](((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki) ..((nazwa_spisu_tresci~="")and ("/"..nazwa_spisu_tresci) or "") .."(/[Ss][Pp][Ii][Ss][%s_]+[Tt][Rr][Ee][ŚśSs][Cc][Ii]))$";]] --local tablica_analizy_obiektow_strony_dany_modul={}; --local tablica_danych_parametrow_szablonu_strony={}; local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,--[[function(pelna_nazwa_szablonu,tabela_modyfikatorow) local pelna_nazwa_spisu_tresci,strona_ze_spisem_tresci=mw.ustring.match(pelna_nazwa_szablonu,pelna_nazwa_spisu_tresci_wzor); if(pelna_nazwa_spisu_tresci and strona_ze_spisem_tresci)then pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,nil,true); if(tekst)then ---- if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end; if(not tablica_ksiazki.spis_tresci[nazwa_spisu_tresci])then tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]={};end local tablica_spis_tresci=tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]; tablica_spis_tresci.tekst=tekst; tablica_spis_tresci.adres_wzgledny_spisu_tresci=strona_ze_spisem_tresci; ---- return tekst; end; end; end]]nil,function(str,pelna_nazwa_strony,tablica_analizy_dany_modul,czy_naglowek) local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod) if(obiekt=="SZABLON")then ---- local bez_kodow=not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()); if(bez_kodow)then return;end; ---- local function PomijajLinkiOrazLicencje(szablon) return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]; if(czy_szablony_licencji)then return true;end; local czy_szablony_ozdobne=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu[nazwa_szablonu]; if(czy_szablony_ozdobne)then return true;end; --local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); --local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,nazwa_szablonu); --if(wynik)then return wynik;end; ---- if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]))then return true;end; local tab_wyzyskane_od_nazwy_szablonu=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_wyzyskane_od_nazwy_szablonu)then return true;end; end); end; ---- local CzySzablonLinkLubLicencja=function(szablon) local ile_szablon_linki_lub_licencje=0; local _,ile=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("(SZABLON)"), function(obiekt,kod) kod=tonumber(kod); local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local wynik=PomijajLinkiOrazLicencje(szablon); if(wynik)then ile_szablon_linki_lub_licencje=ile_szablon_linki_lub_licencje+1;end; return nil; end); if((ile>0)and(ile_szablon_linki_lub_licencje>0))then return true;end; end; local bez_kodow_linkow_wewnetrznych=( not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("LINK[WZ]")) and not CzySzablonLinkLubLicencja(szablon) ) or not mw.ustring.match(szablon,"\n([#:*;]+)[^%S\n]*([%w%p]*)[^%S\n]*([^\n]+)") or not mw.ustring.match(szablon,"\n([#:*;]*)[^%S\n]*([%w%p]+)[^%S\n]*([^\n]+)"); if(bez_kodow_linkow_wewnetrznych)then return;end; local wynik=PomijajLinkiOrazLicencje(szablon); if(wynik)then return;end; ----- return ""; --[[elseif(obiekt=="WIKITABELA")then szablon=mw.ustring.match(szablon,"^{|(.-)|}$"); szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|[%-%+][^%S\n]+[^|\n]*","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|%-","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|%+","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|","\n\n"); return szablon;]] end; return; end; if(not czy_naglowek)then str=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_strony,tablica_analizy_dany_modul,function(szablon,obiekt,kod) local wynik=FunkcjaIteratoraTekstuZakodowego(szablon,obiekt,kod); if(wynik)then return wynik;end; return nil,true; end); return str; end; return str; end,function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end); ---- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_jakie_nie_rozdzialy=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu; local jakie_nie_rozdzialy=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_nie_rozdzialy); local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_nie_rozdzialy,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); local numer_rozdzialu_w_ksiazce=1; local parametry_modul=require("Module:Parametry"); local html_modul=require("Module:Html"); local szablonowe_modul=require("Module:Szablonowe"); local tab_dozwolonych_szablonow_z_elementami_spisu_artykulow=stronicowyparser_obiekty_modul.tab_dozwolonych_szablonow_z_elementami_spisu_artykulow; local czy_jest_spis_tresci=nil; local poziom_spisu_tresci=nil; local dalej_nie_rozwazaj_spis_tresci=nil; local wliczaj_artykuly_tego_rozdzialu=nil; local specjalne_modul=require("Module:Specjalne"); local tablica_artykulow_zebranych={}; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); ---- --local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu; --local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu; ---- local maksymalny_rozmiar_rozdzialu_zerowego=50; local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany) --rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1"); --if(poziom_rozdzialu)then -- text=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(text,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); --end; if(not tabela_artykulow)then tabela_artykulow={};end; local spreparowany_uzyskany_tekst_rozdzialu=nil; ---- local tabela_rozdzial_artykulow; if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then tabela_artykulow[numer_rozdzialu_w_ksiazce]={}; ---- tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce]; ---- local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,}; spreparowany_uzyskany_tekst_rozdzialu=rozdzial_na_tekst; end; local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]); if(czy_spis_rzeczy_napis_wprowadzenia_tekstu)then poziom_spisu_tresci=poziom_rozdzialu; czy_jest_spis_tresci=true; elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then if((((poziom_spisu_tresci>0)and(poziom_rozdzialu>0))or((poziom_spisu_tresci<=0)and(poziom_rozdzialu<=0)))and(math.abs(poziom_spisu_tresci or 0)<math.abs(poziom_rozdzialu)))then wliczaj_artykuly_tego_rozdzialu=true; else wliczaj_artykuly_tego_rozdzialu=nil; dalej_nie_rozwazaj_spis_tresci=true; end; end; local function iteratorTekstuNaglowka() local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)"; local iter=nil; local tak=nil; local czy_rozdzial=nil; return function() if(not czy_rozdzial)then if((poziom_rozdzialu or 0)>0)then if(not iter)then iter=mw.ustring.gmatch(rozdzial,"([^\n]+)"); end; local wartosc=iter(); if(not wartosc)then czy_rozdzial=true; iter=nil; else return "","",wartosc,true; end; else czy_rozdzial=true; end; end; local function dane_iteratora() if(not iter)then iter=mw.ustring.gmatch(text,"\n"..re); end; local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=iter(); if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci); return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false; else return nil; end; end; if(not tak)then tak=true; local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=mw.ustring.match(text,"^"..re); if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci); return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false; else return dane_iteratora(); end; end; return dane_iteratora(); end; end; ---- local function LiniaArtykulow(linia) local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod=iter(); if((not szablon) or (not kod) or(not obiekt))then return {};end; local function SzablonAnalizujKompletnosc(szablon) ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- return stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu[nazwa_szablonu]; end); return wynik; end; ----- local tak_pierwsze=((obiekt=="SZABLON") and SzablonAnalizujKompletnosc(szablon) or nil); ----- for szablon,obiekt,kod in iter do if(obiekt=="SZABLON")then local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local tak_drugie=SzablonAnalizujKompletnosc(szablon); if(tak_pierwsze)then if(tak_drugie)then linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")(%s*)("..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")","%1,%2%3"); end; else if(tak_drugie)then linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")(%s*)(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")","%1,%2%3"); end; end; end; end; local tabela_linii_artykulow=mw.text.split(linia,"%s*,%s*",false); for i=1,#tabela_linii_artykulow,1 do tabela_linii_artykulow[i]=mw.ustring.gsub(tabela_linii_artykulow[i],"&#"..mw.ustring.byte(',')..";",","); end; return tabela_linii_artykulow; end; local iterator=iteratorTekstuNaglowka(); local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial])); for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do local nie_pomijaj_tego_rozdzialu=false; if((not przedrostek_listy)or(#przedrostek_listy==0))then local rozdzial,czy_z_kropka=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(((rozdzial)and(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego))or(not rozdzial))then nie_pomijaj_tego_rozdzialu=true; end; else local czy_pominac_ten_rozdzial_jako_linie=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrostek_listy,linia,true,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(not czy_pominac_ten_rozdzial_jako_linie)then nie_pomijaj_tego_rozdzialu=true; else nie_pomijaj_tego_rozdzialu=false; end; end; if(nie_pomijaj_tego_rozdzialu)then local ile=0; local linia_rozwazana=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(linia,nil ,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod--[[,czy_sam_siebie]]) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- local czy_link=linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu] or inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu] or stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu ,tablica_danych_parametrow_szablonu_strony,kod); local czy_szablon=czy_link or szablony_kompletowania_stron_woluminu[nazwa_szablonu] or szablony_licencji[nazwa_szablonu] --or szablony_ozdobne_stron_woluminu[nazwa_szablonu]; if(czy_link)then ile=ile+1;end; return czy_szablon,obiekt,kod; end); elseif(obiekt=="LINKW")then if(specjalne_modul["CzyLinkWewnętrzny"](szablon))then ile=ile+1; return true,obiekt,kod; end; elseif(obiekt=="LINKZ")then ile=ile+1; return true,obiekt,kod; end; end); ---- local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$"); local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$") or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$")))) or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil); ---- local nowa_linia=false; local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana) return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare) --if((czy_spis_rzeczy_napis_wprowadzenia_tekstu)and(numer_podtablicy_w_tablicy>2))then return;end; if((czy_rozdzial_centrowany)and(w_rozdziale)and(czy_linia_uwzgledniana)and(tab_stare[2])and(tab_stare[2][1]))then tab_stare[2][1]=tab_stare[2][1]+1; end; if(not w_rozdziale)then local function CzyZaliczac() return ((not mw.ustring.match(linia,"^%w+%p+")) and mw.ustring.match(linia,"^%s*'*%s*%w+")); --or mw.ustring.match(linia,"^%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("LINKZ")); end; if(nowa_linia)then tab_stare[2][4]=true; table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); elseif(((poziom_rozdzialu)or(#(przedrostek_listy or "")>0))and((ile>1)or(CzyZaliczac())))then nowa_linia=true; numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1; tabela_artykulow[numer_rozdzialu_w_ksiazce]={}; tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce]; ---- local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,}; tab_stare[2][4]=true; tab_stare[6]=(numer_podtablicy_w_tablicy>2) and 0 or nil; tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy]={}; table.insert(tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy],tab_stare); else table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); end; else table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); end; end; end; local function AnalizaLiniiObiekty(linia_rozwazana) local tab_linia=LiniaArtykulow(linia_rozwazana); for k=1,#tab_linia,1 do local iterator2=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tab_linia[k],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); local tab_nieobslugiwane=nil; for szablon,obiekt,kod in iterator2 do local czy_szablon=(obiekt=="SZABLON");local czy_link=((obiekt=="LINKW")or(obiekt=="LINKZ")); if(czy_szablon or czy_link)then local przerwij=nil; if(czy_szablon)then ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu ,tabela_modyfikatorow) ---- --local przerwij=nil; local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then if(tabela_spisu[1]==true)then --local tabela_parametrow_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil ,tablica_danych_parametrow_szablonu_strony,kod); local numer_link=tabela_spisu["numer_link"]; for name,value in pairs(tabela_parametrow_szablonu)do if(name~=numer_link)then local kod_w_nie_obslugiwanych=tabela_parametrow_szablonu[name]; local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(kod_w_nie_obslugiwanych,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); if(not tab_nieobslugiwane)then tab_nieobslugiwane={};end; for szablon,obiekt,kod in iter do if(not tab_nieobslugiwane[obiekt])then tab_nieobslugiwane[obiekt]={};end; tab_nieobslugiwane[obiekt][kod]=true; end; end; end; local tyt=tabela_parametrow_szablonu[numer_link]; przedrostek_listy=""; tekstowy_przedrostek,szablon=mw.ustring.match(tyt,"^'*[^%S\n]*([%d%.]*)[^%S\n]*([^\n]-)'*$"); przerwij=true; else przedrostek_listy=""; tekstowy_przedrostek=tabela_parametrow_szablonu[tabela_spisu["numer"]]; szablon=tabela_parametrow_szablonu[tabela_spisu["link"]]; przerwij=true; end; end; end); end; --[[if(przerwij)then local iterator3=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon2,obiekt2,kod2 in iterator3 do if(obiekt2=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon2,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod2); local tabela_linku=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_linku)then szablon=szablon2; break; end; elseif(obiekt2=="LINKW")then szablon=szablon2; break; end; end; end;]] local pozycja_artykulu=nil;local nazwa=nil; local tab_pozycja_elementow_w_spisie_rzeczy;local numer_rodzaju_artykulu_poprz;local id;local parametry_szablonu;local kom; local link_szablon=nil; local czy_obslugiwane=nil; local CzyObslugiwane=function() local wartosc=((tab_nieobslugiwane[obiekt])and(tab_nieobslugiwane[obiekt][kod])); czy_obslugiwane=wartosc; return (not wartosc); end; if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then local linia_artykokow=tab_linia[k]; numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]); --mw.log() if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil; end; --mw.logObject(tabela_rozdzial_artykulow) else link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil; end; --[[if(przerwij)then break;end;]] if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then --- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu_licencji,nazwa_szablonu_licencji,tabela_modyfikatorow_licencji) if(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu_licencji])then if(tabela_parametrow_szablonu_licencji)then local autor=tabela_parametrow_szablonu_licencji["Autor"]; local szkoly=tabela_parametrow_szablonu_licencji["Ukończone szkoły"]; local email=tabela_parametrow_szablonu_licencji["Email"]; local dotyczy=tabela_parametrow_szablonu_licencji["Dotyczy"]; local licencjonowanie=tabela_parametrow_szablonu_licencji["Licencjonowanie"]; local umowa_prawna=tabela_parametrow_szablonu_licencji["Umowa prawna"]; local konsekwencje=tabela_parametrow_szablonu_licencji["Konsekwencje"]; local frame=mw.getCurrentFrame(); if(autor~=nil)then autor=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(autor,pelna_nazwa_spisu_tresci ,tablica_analizy_obiektow_strony_dany_modul);} end; if(szkoly~=nil)then szkoly=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szkoly,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(email~=nil)then email=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(email,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(dotyczy~=nil)then dotyczy=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(dotyczy,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(licencjonowanie~=nil)then licencjonowanie=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(licencjonowanie,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(umowa_prawna~=nil)then umowa_prawna=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(umowa_prawna,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(konsekwencje~=nil)then konsekwencje=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(konsekwencje,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(autor~=nil)then tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje}; licencja_z_autorem=false; end; return true; 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); if(wynik)then break;end; end; end; end; end; end; if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end; end; end; numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1; end; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ---rozdzial_tab[1]=rozdzial;rozdzial_tab[2]=linia rozdziału AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany); if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil); end; --mw.logObject(tabela_artykulow); if(czy_artykul_korzystany)then return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci; else return tabela_artykulow,nil,przekierowanie_spisu_tresci; end; end; function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow) local parametry_modul=require("Module:Parametry"); if(not parametry_modul.TypeTable(tabela_artykulow))then return;end; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); for _,tab_lista in ipairs(tabela_artykulow)do if(tab_lista[2])then for _,artykul_w_bazie_element in ipairs(tab_lista[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(jakie_spisy_tresci[artykul_bez_naglowka_w_bazie])then return artykul_bez_naglowka_w_bazie; end; end; end; end; end; function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH) local adres_ksiazki_glownego_spisu_tresci=nil; local techniczne_modul=require("Module:Techniczne"); local nazwy_modul=require("Module:Nazwy"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local ile2,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki,tekst=true,}; if(ile2>0)then local strona_spisu_tresci=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki); if(strona_spisu_tresci)then local html_modul=require("Module:Html"); strona_spisu_tresci=html_modul.DecodeHtml(strona_spisu_tresci,true); local tabela_nazw={}; local nazwa_przestrzeni2=nazwy_modul["NAZWAPRZESTRZENI"](strona_spisu_tresci,tabela_nazw); local nazwa_przestrzeni_ksiazki2=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_spisu_tresci,tabela_nazw); local nazwa_ksiazki2=(nazwa_przestrzeni_ksiazki2=="") and nazwy_modul["NAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw) or nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw); ---- if((nazwa_przestrzeni~=nazwa_przestrzeni2)or(nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki2)or(nazwa_ksiazki~=nazwa_ksiazki2))then if(((nazwa_przestrzeni2==nazwy_np_modul.Main)or(nazwa_przestrzeni2==nazwy_np_modul.Wikijunior))or(((nazwa_przestrzeni2==nazwy_np_modul.Wikibooks)or(nazwa_przestrzeni2==nazwy_np_modul.User))and(nazwa_przestrzeni_ksiazki2~="")))then ---- adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,}; local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil; if((wynik or 0)==1)then return 1; end; ---- nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki=nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2; pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); else return 2; end; end; end; end; local parametry_modul=require("Module:Parametry"); local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer) if((parametry_modul.TypeTable(tablista_artykulow)) and parametry_modul["CzySąElementyTablicy"](tablista_artykulow))then local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci); local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci; ---- local przekierowanie_strona=czy_spis_tresci_table and spis_tresci[2] or nil; local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,}; --- if(not tablista_artykulow[1][1][2][1])then for numer,tab_lista in ipairs(tablista_artykulow[1])do if(numer>1)then tab_element[numer]=tab_lista; end; end; table.remove(tablista_artykulow,1); end; --- for _,tab_lista in ipairs(tablista_artykulow)do local numer_rozdzialu=tab_lista[1][2][1]; local czy_rozdzial_centrowany=tab_lista[1][2][4]; if(numer_rozdzialu>0)then tab_lista[1][2][1]=numer_rozdzialu+1; end; if(czy_rozdzial_centrowany)then break;end; end; --- numer=numer+1; --- --if(not tablista_artykulow)then tablista_artykulow={};end; ---- table.insert(tablista_artykulow,1,tab_element); if(spis_tresci)then if(not tab_inne_spisy)then tab_inne_spisy={};end; table.insert(tab_inne_spisy,spis_tresci); if(not tablista_artykulow[1][2])then tablista_artykulow[1][2]={};end; local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,}; table.insert(tablista_artykulow[1][2],1,tab_stare); end; end; return tablista_artykulow,tab_inne_spisy,numer; end; local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer) --mw.logObject(tablista_artykulow,"TYTAn123fhh"); local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH); --mw.logObject(tablista_artykulow_iter,spis_tresci); ---- if((tablista_artykulow_iter)and(parametry_modul.TypeTable(tablista_artykulow_iter)))then tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer); for _,value in ipairs(tablista_artykulow_iter)do if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end; table.insert(tablista_artykulow,value); end; end; return tablista_artykulow,tab_inne_spisy,numer; end; local function SpisRzeczy(tabela_artykulow,tab_inne_spisy) local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow) if(artykul_spisu_rzeczy)then local numer=1; tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer); tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer); end; return tabela_artykulow,tab_inne_spisy; end; local adres_ustawien=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "").."NawigacjaSpecjalna/Nawigacja/"..pelna_nazwa_ksiazki; ---- adres_ustawien=techniczne_modul.PrzekierowanieDoStrony(adres_ustawien) or adres_ustawien; ---- local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,}; if(not tekst)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji={}; local szablonowe_modul=require("Module:Szablonowe"); local tekst_zakodowany=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,nil,nil); local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty'); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zakodowany,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji); local szablon_uklad_autonawigacji; local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={}; local tabela_parametrow_szablonu_uklad_autonawigacji; local nazwa_szablonu_uklad_autonawigacji; local tabela_modyfikatorow_uklad_autonawigacji; local adres_ustawien_szablonowy=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](adres_ustawien,nil,nil); for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,kod,adres_ustawien_szablonowy,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) tabela_parametrow_szablonu_uklad_autonawigacji=tabela_parametrow_szablonu; nazwa_szablonu_uklad_autonawigacji=nazwa_szablonu; tabela_modyfikatorow_uklad_autonawigacji=tabela_modyfikatorow; if(nazwa_szablonu==stronicowyparser_obiekty_modul.uklad_autonawigacji)then szablon_uklad_autonawigacji=szablon; return true; end; end); if(wynik)then break;end; end; end; if(not szablon_uklad_autonawigacji)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; --local tabela_parametrow_szablonu_uklad_autonawigacji,nazwa_szablonu_uklad_autonawigacji,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon_uklad_autonawigacji); if(not tabela_parametrow_szablonu_uklad_autonawigacji)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local parametry_modul=require("Module:Parametry"); local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"]; ---- local html_modul=require("Module:Html"); ---- local czy_automat_manualny=(automat_manualny) and parametry_modul.CzyTak(automat_manualny) or nil; if(czy_automat_manualny)then local sub_nazwa_spis_tresci; local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"]; spis_tresci=spis_tresci and html_modul.DecodeHtml(spis_tresci,true) or nil; if(parametry_modul.CzyTak(spis_tresci))then local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local pelna_nazwa_ksiazki_spisu_tresci=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci,tabela_nazw); if(pelna_nazwa_ksiazki_spisu_tresci==pelna_nazwa_ksiazki)then sub_nazwa_spis_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci,tabela_nazw); else sub_nazwa_spis_tresci=""; end; else sub_nazwa_spis_tresci=""; end; local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local frame=mw.getCurrentFrame(); for name,value in pairs(tabela_parametrow_szablonu_uklad_autonawigacji)do tabela_parametrow_szablonu_uklad_autonawigacji[name]=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(value,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)|([^{}]-)}}}","{{(((}}%1{{!}}%2{{)))}}"); szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)}}}","{{(((}}%1{{)))}}"); return szablon; end; end),}; end; local nazwy_modul=require("Module:Nazwy"); local bez_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez spisów treści"]; local czy_bez_spisow_tresci=(bez_spisow_tresci) and parametry_modul.CzyTak(bez_spisow_tresci) or nil; local bez_analizy_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez analizy spisów treści"]; local czy_bez_analizy_spisow_tresci=(bez_analizy_spisow_tresci) and parametry_modul.CzyTak(bez_analizy_spisow_tresci) or nil; ---- local tab_inne_spisy;local nazwa_glownego_spisu; local tablista_artykulow; local licencja; local numer=1; ---- --local pelna_nazwa_spisu_tresci=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); ---- local tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;local tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;local przekierowanie_spisu_tresci; if(not czy_bez_spisow_tresci)then local spis_tresci_main=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"]; if(spis_tresci_main)then spis_tresci_main=html_modul.DecodeHtml(spis_tresci_main,true); --- spis_tresci_main=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci_main,[2]=pelna_nazwa_ksiazki,}; end; local tabela_nazw={}; local pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci=parametry_modul.CzyTak(spis_tresci_main) and nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci_main,tabela_nazw) or pelna_nazwa_ksiazki; if(pelna_nazwa_ksiazki~=pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci)then return 0; end; nazwa_glownego_spisu=parametry_modul.CzyTak(spis_tresci_main) and nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci_main,tabela_nazw) or ""; else nazwa_glownego_spisu=""; end; if((not czy_bez_spisow_tresci)and(not czy_bez_analizy_spisow_tresci))then tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); if(przekierowanie_spisu_tresci)then nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,}; end; if((not tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika)or(tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika==0))then return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika; end; local IteratorSpisTresci=function() local liczba=1; return function() local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba]; liczba=liczba+1; return spis_tresci; end; end; local iter=IteratorSpisTresci(); tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika; licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika; tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer); local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow); if(artykul_spisu_rzeczy)then tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer); end; for spis_tresci in iter do --- if(not parametry_modul.CzyTak(spis_tresci))then return;end; spis_tresci=html_modul.DecodeHtml(spis_tresci,true); spis_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci,[2]="",}; --- tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer); end; end; ---- local IteratorFun=function() local liczba=1; local STRONA=function(liczba)return liczba*2-1;end; local NAZWA=function(liczba)return liczba*2;end; return function() local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)]; local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)]; liczba=liczba+1; return strona,nazwa; end; end; local tablica_stron_ksiazki={}; local tablica_stron_inne={}; local iter=IteratorFun(); local ksiazkawe_modul=require("Module:Książkowe"); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local dodatkowe_artykuly=nil; local tablica_artykulow_zebranych={}; local tab_nazwa_spisow_przekierowaniowych={}; local dodatkowe_artykuly=nil; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne") local tabela_rozdzial_artykulow=nil; ---- local pelna_nazwa_spisu_tresci=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci); ---- --local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={}; ---- for strona,nazwa in iter do local function ZbieranieDanychStronZAutonawigacji() if(not parametry_modul.CzyTak(strona))then return;end; strona=html_modul.DecodeHtml(strona,true); nazwa=parametry_modul.CzyTak(nazwa) and html_modul.DecodeHtml(nazwa,true) or nil; if(not dodatkowe_artykuly)then if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end; table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,}); tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow]; end; --- strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,}; local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare) if(not dodatkowe_artykuly)then dodatkowe_artykuly={};end; ---- local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]); local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1]; local czy_w_podreczniku=tab_stare[5]; local kod_jezyka_koncowy=czy_table_baza_artykulu and tab_stare[1][5] or nil; local kod_projektu_koncowy=czy_table_baza_artykulu and tab_stare[1][6] or nil; ---- table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,}); ---- table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare); end; local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy; numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,true,{strona,nazwa,},nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",adres_ustawien,adres_ustawien_szablonowy,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,tab_nazwa_spisow_przekierowaniowych,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"); end; ZbieranieDanychStronZAutonawigacji(); end; ---- return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci; end; return p; npubu5qy83rvy9t1vdw3si1lklhxul9 557805 557804 2026-09-28T08:48:56Z Persino 2851 557805 Scribunto text/plain local p={}; local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2) local parametry_modul=require("Module:Parametry"); local ile=0; for i,tabela_rozdzial_artykulow2_i in pairs(tabela_rozdzial_artykulow2)do i=parametry_modul.TypeNumber(i) and i or nil; if((i)and(i>1))then ile=ile+#(tabela_rozdzial_artykulow2_i or {}); end; end; return ile; end; local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom,czy_nazwy_rozwiniete=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil); --- local numer_rodzaju_artykulu_poprz=numer_rodzaju_artykulu; if(numer_rodzaju_artykulu)then --mw.log(szablon,numer_rodzaju_artykulu,wliczaj_artykuly_tego_rozdzialu) numer_rodzaju_artykulu=(wliczaj_artykuly_tego_rozdzialu)and numer_rodzaju_artykulu or (numer_rodzaju_artykulu+6); end; --- --Rozdzialy początek local znaki_niedozwolone; local function ParametrPierwszy(tab_artykul,czy_niedozwolone) local artykul=tab_artykul[1]; local parametry=tab_artykul[2]; local naglowek=tab_artykul[3]; local tablica_przekierowania=tab_artykul[4]; ---- local znaki_niedozwolone; if(czy_niedozwolone)then znaki_niedozwolone=mw.ustring.match(artykul,"[|<>{}%[%]]"); end; ---- --if(artykul)then --artykul=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(artykul,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); --artykul=parametry_modul["Odstępy"]{[1]=artykul,[2]="tak",} --artykul=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](artykul); --end; ---- --if(parametry)then -- parametry=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(parametry,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) -- parametry=parametry_modul["Odstępy"]{[1]=parametry,[2]="tak",} -- parametry=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](parametry); --end; ---- --if(naglowek)then -- naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); -- naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",} -- naglowek=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](naglowek); --end; ---- tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul; return tab_artykul,znaki_niedozwolone,tablica_przekierowania; end; local parametry_modul=require("Module:Parametry"); ---- if((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz==1)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1; local czy_tablica=nil;local tablica_przekierowania=nil; if(tab_pozycja_elementow_w_spisie_rzeczy[1])then czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]); if(not czy_tablica)then --tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); --tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",} --tab_pozycja_elementow_w_spisie_rzeczy[1]=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tab_pozycja_elementow_w_spisie_rzeczy[1]); znaki_niedozwolone=mw.ustring.match(tab_pozycja_elementow_w_spisie_rzeczy[1],"[|<>{}%[%]]"); tablica_artykulow_zebranych={tab_pozycja_elementow_w_spisie_rzeczy[1],0,false,}; else tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true); local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil; if(not czy_inna_ksiazka)then czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]); else local artykul=tablica_przekierowania[2]; local parametry=tablica_przekierowania[3]; local naglowek=tablica_przekierowania[4]; czy_tablica=(artykul)and(parametry or naglowek); end; if(not czy_tablica)then local aktualny_artykul_ksiazki; if(not czy_inna_ksiazka)then aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1]; else aktualny_artykul_ksiazki=tablica_przekierowania[2] or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]); end; tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; else local aktualny_artykul_ksiazki; if(not czy_inna_ksiazka)then aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1][1]; else aktualny_artykul_ksiazki=tablica_przekierowania[2] or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]); end; if(tablica_artykulow_zebranych[1]~=aktualny_artykul_ksiazki)then tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,}; else tablica_artykulow_zebranych[3]=true; end; end; end; end; ---- local szablonowe_modul=require("Module:Szablonowe"); ---- if((not czy_nazwy_rozwiniete)and(tab_pozycja_elementow_w_spisie_rzeczy[2]))then local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); tab_pozycja_elementow_w_spisie_rzeczy[2]=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tab_pozycja_elementow_w_spisie_rzeczy[2],pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci); end; ---- if(znaki_niedozwolone)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"); end; end; local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false); local stara_nazwa_jednostki=nazwa_jednostki; if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end; --local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]]; linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); --local przekierowanie=pelna_nazwa_ksiazki..((nazwa_jednostki~="") and ("/"..nazwa_jednostki) or ""); --local strona=techniczne_modul.PrzekierowanieDoStrony(przekierowanie); --local strona=(tablica_przekierowania) local przekierowanie; if(--[[strona--]]tablica_przekierowania)then --nazwa_jednostki=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona); --przekierowanie=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](przekierowanie) przekierowanie=tablica_przekierowania[2]; if((czy_tablica)and(stara_nazwa_jednostki~=""))then przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,} or przekierowanie ) or nil; nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,}; local czy_w_tab=tablica_artykulow_zebranych[2]; local czy_wsadzac=tablica_artykulow_zebranych[3]; if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,}; --table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); tablica_artykulow_zebranych[2]=1; end; end; else nazwa_jednostki=tab_pozycja_elementow_w_spisie_rzeczy[1]; if((czy_tablica)and(stara_nazwa_jednostki~=""))then local czy_w_tab=tablica_artykulow_zebranych[2]; local czy_wsadzac=tablica_artykulow_zebranych[3]; if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,}; --table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); tablica_artykulow_zebranych[2]=1; end; end; end; local ile_dodac_do_poziomu_artykulu=tablica_artykulow_zebranych[2]; local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil; local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[2] or tablica_przekierowania or tab_pozycja_elementow_w_spisie_rzeczy[5] or tab_pozycja_elementow_w_spisie_rzeczy[6] or ile_dodac_do_poziomu_artykulu_lub_nil) and ({nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],ile_dodac_do_poziomu_artykulu_lub_nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or nazwa_jednostki),{#przedrostek_listy--[[+(ile_dodac_do_poziomu_artykulu and ile_dodac_do_poziomu_artykulu or 0)]],przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,(numer_rodzaju_artykulu>1) and (Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)) or nil,}; --table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); --mw.logObject(tab_stare,"TYTAN1") __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare); --mw.logObject(tabela_rozdzial_artykulow2,"TYTAN2") elseif((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz>=2)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then if(tab_pozycja_elementow_w_spisie_rzeczy[1])then if(not parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]))then --tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",}; --tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); else tab_pozycja_elementow_w_spisie_rzeczy[1]=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],false); end; end; local szablonowe_modul=require("Module:Szablonowe"); if((not czy_nazwy_rozwiniete)and(tab_pozycja_elementow_w_spisie_rzeczy[2]))then local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); tab_pozycja_elementow_w_spisie_rzeczy[2]=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tab_pozycja_elementow_w_spisie_rzeczy[2],pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci); end; if(tab_pozycja_elementow_w_spisie_rzeczy[3])then tab_pozycja_elementow_w_spisie_rzeczy[3]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[3],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); tab_pozycja_elementow_w_spisie_rzeczy[3]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[3],[2]="tak",[4]="tak",}; end; if(tab_pozycja_elementow_w_spisie_rzeczy[4])then tab_pozycja_elementow_w_spisie_rzeczy[4]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[4],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); tab_pozycja_elementow_w_spisie_rzeczy[4]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[4],[2]="tak",[4]="tak",}; end; local wiki_modul=require("Module:Wiki"); ----- local numer_rodzaju_artykulow_w_nie_podreczniku=numer_rodzaju_artykulu+1; ----- if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku]={}; end; --local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]]; linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[1])and((tab_pozycja_elementow_w_spisie_rzeczy[2])or(tab_pozycja_elementow_w_spisie_rzeczy[3])or(tab_pozycja_elementow_w_spisie_rzeczy[4])or(tab_pozycja_elementow_w_spisie_rzeczy[5])or(tab_pozycja_elementow_w_spisie_rzeczy[6])))and({tab_pozycja_elementow_w_spisie_rzeczy[1],tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[3],tab_pozycja_elementow_w_spisie_rzeczy[4],tab_pozycja_elementow_w_spisie_rzeczy[5],nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or tab_pozycja_elementow_w_spisie_rzeczy[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,false,Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2),}; --table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare); --WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); __FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare); end; --mw.logObject(tabela_rozdzial_artykulow2,"TYTAN") return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych; end; function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local specjalne_modul=require("Module:Specjalne"); local szablonowe_modul=require("Module:Szablonowe"); local html_modul=require("Module:Html"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_na_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(rozdzial,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then ----- local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu; local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych; local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu; ----- local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; ---- local dodatek=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(dodatek)then return dodatek;end; local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then return (not tab_szablon_link_intelignetny[4]) and tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1]; else local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end; end; local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end; ---- if(szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu[nazwa_szablonu])then local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); return szablon; end; end); if(wynik)then return wynik;end; ---- local rozdzial_na_tekst=mw.ustring.gsub(szablon,"^{{[^{}|]*|([^{}|]*).*}}$","%1"); return rozdzial_na_tekst; elseif(obiekt=="NOWIKI")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif(obiekt=="PRE")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif(obiekt=="ŹRÓDŁO")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc); return rozdzial_na_tekst; else return ""; end; elseif((obiekt~="MATH")and(obiekt~="GALERIA")and(obiekt~="MAPAOBRAZU")and(obiekt~="INNEPRE"))then local rozdzial_na_tekst=specjalne_modul["UsuńKomentarze"](szablon); rozdzial_na_tekst=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńSzablonyStylów"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZnaczniki"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńKategorie"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńWywołaniaPlików"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńInterwiki"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst); return rozdzial_na_tekst; else return ""; end; end); ---- rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst); rozdzial_na_tekst=specjalne_modul["UsuńZbędneBiałeZnaki"](rozdzial_na_tekst); return rozdzial_na_tekst; end; function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH) local parametry_modul=require("Module:Parametry"); if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki))then return 0;end; local nazwy_modul=require("Module:Nazwy"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local pelna_nazwa_spisu_tresci=pelna_nazwa_ksiazki..((nazwa_spisu_tresci~="")and("/"..nazwa_spisu_tresci) or ""); --- local szablonowe_modul=require("Module:Szablonowe"); local pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci); --- local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_spisu_tresci); local przekierowanie_spisu_tresci=nil; local tab_nazwa_spisow_przekierowaniowych={}; --[[if(adres_ksiazki_glownego_spisu_tresci)then if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end; if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end; if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end; end;]] --if(adres_ksiazki_glownego_spisu_tresci)then -- local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; -- local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; -- local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end; -- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end; -- end; if(strona)then local html_modul=require("Module:Html"); strona=html_modul.DecodeHtml(strona,true); local tabela_nazw={}; local pelna_nazwa_ksiazki_przekierowania=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw); if(pelna_nazwa_ksiazki_przekierowania~=pelna_nazwa_ksiazki)then return 0;end; pelna_nazwa_spisu_tresci=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw); nazwa_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); przekierowanie_spisu_tresci=nazwa_spisu_tresci; ---- pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci); end; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); --local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_spisu_tresci,nil,true); local __FUNKCJA_PARAMETRY=nil; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,false,nil,nil,function(tekst_artykulu,pelna_nazwa_spisu_tresci_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end,__FUNKCJA_PARAMETRY); if(not tekst_rozwiniety_calego_artykulu)then return 0;end; if(__FUNKCJA_ZBIERANIA_DANYCH)then __FUNKCJA_ZBIERANIA_DANYCH(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; ---- local techniczne_modul=require("Module:Techniczne"); ---- local tabelalisty2=nil; local licencja_z_autorem=true; local tabela_artykulow=nil; local tabela_licencji_spisu_tresci=nil; local parametry_modul=require("Module:Parametry"); local html_modul=require("Module:Html"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy; local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy; local szablony_kompletowania_stron_woluminu=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu; local szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji; local szablony_ozdobne_stron_woluminu=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") --[[local pelna_nazwa_spisu_tresci_wzor="^("..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or "") ..techniczne_modul["WzórNazwyStrony"](((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki) ..((nazwa_spisu_tresci~="")and ("/"..nazwa_spisu_tresci) or "") .."(/[Ss][Pp][Ii][Ss][%s_]+[Tt][Rr][Ee][ŚśSs][Cc][Ii]))$";]] --local tablica_analizy_obiektow_strony_dany_modul={}; --local tablica_danych_parametrow_szablonu_strony={}; local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,--[[function(pelna_nazwa_szablonu,tabela_modyfikatorow) local pelna_nazwa_spisu_tresci,strona_ze_spisem_tresci=mw.ustring.match(pelna_nazwa_szablonu,pelna_nazwa_spisu_tresci_wzor); if(pelna_nazwa_spisu_tresci and strona_ze_spisem_tresci)then pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,nil,true); if(tekst)then ---- if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end; if(not tablica_ksiazki.spis_tresci[nazwa_spisu_tresci])then tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]={};end local tablica_spis_tresci=tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]; tablica_spis_tresci.tekst=tekst; tablica_spis_tresci.adres_wzgledny_spisu_tresci=strona_ze_spisem_tresci; ---- return tekst; end; end; end]]nil,function(str,pelna_nazwa_strony,tablica_analizy_dany_modul,czy_naglowek) local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod) if(obiekt=="SZABLON")then ---- local bez_kodow=not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()); if(bez_kodow)then return;end; ---- local function PomijajLinkiOrazLicencje(szablon) return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]; if(czy_szablony_licencji)then return true;end; local czy_szablony_ozdobne=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu[nazwa_szablonu]; if(czy_szablony_ozdobne)then return true;end; --local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); --local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,nazwa_szablonu); --if(wynik)then return wynik;end; ---- if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]))then return true;end; local tab_wyzyskane_od_nazwy_szablonu=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_wyzyskane_od_nazwy_szablonu)then return true;end; end); end; ---- local CzySzablonLinkLubLicencja=function(szablon) local ile_szablon_linki_lub_licencje=0; local _,ile=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("(SZABLON)"), function(obiekt,kod) kod=tonumber(kod); local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local wynik=PomijajLinkiOrazLicencje(szablon); if(wynik)then ile_szablon_linki_lub_licencje=ile_szablon_linki_lub_licencje+1;end; return nil; end); if((ile>0)and(ile_szablon_linki_lub_licencje>0))then return true;end; end; local bez_kodow_linkow_wewnetrznych=( not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("LINK[WZ]")) and not CzySzablonLinkLubLicencja(szablon) ) or not mw.ustring.match(szablon,"\n([#:*;]+)[^%S\n]*([%w%p]*)[^%S\n]*([^\n]+)") or not mw.ustring.match(szablon,"\n([#:*;]*)[^%S\n]*([%w%p]+)[^%S\n]*([^\n]+)"); if(bez_kodow_linkow_wewnetrznych)then return;end; local wynik=PomijajLinkiOrazLicencje(szablon); if(wynik)then return;end; ----- return ""; --[[elseif(obiekt=="WIKITABELA")then szablon=mw.ustring.match(szablon,"^{|(.-)|}$"); szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|[%-%+][^%S\n]+[^|\n]*","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|%-","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|%+","\n\n"); szablon=mw.ustring.gsub(szablon,"\n|","\n\n"); return szablon;]] end; return; end; if(not czy_naglowek)then str=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_strony,tablica_analizy_dany_modul,function(szablon,obiekt,kod) local wynik=FunkcjaIteratoraTekstuZakodowego(szablon,obiekt,kod); if(wynik)then return wynik;end; return nil,true; end); return str; end; return str; end,function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy"); local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end); ---- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_jakie_nie_rozdzialy=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu; local jakie_nie_rozdzialy=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_nie_rozdzialy); local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_nie_rozdzialy,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); local numer_rozdzialu_w_ksiazce=1; local parametry_modul=require("Module:Parametry"); local html_modul=require("Module:Html"); local szablonowe_modul=require("Module:Szablonowe"); local tab_dozwolonych_szablonow_z_elementami_spisu_artykulow=stronicowyparser_obiekty_modul.tab_dozwolonych_szablonow_z_elementami_spisu_artykulow; local czy_jest_spis_tresci=nil; local poziom_spisu_tresci=nil; local dalej_nie_rozwazaj_spis_tresci=nil; local wliczaj_artykuly_tego_rozdzialu=nil; local specjalne_modul=require("Module:Specjalne"); local tablica_artykulow_zebranych={}; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); ---- --local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu; --local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu; ---- local maksymalny_rozmiar_rozdzialu_zerowego=50; local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany) --rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1"); --if(poziom_rozdzialu)then -- text=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(text,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); --end; if(not tabela_artykulow)then tabela_artykulow={};end; local spreparowany_uzyskany_tekst_rozdzialu=nil; ---- local tabela_rozdzial_artykulow; if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then tabela_artykulow[numer_rozdzialu_w_ksiazce]={}; ---- tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce]; ---- local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,}; spreparowany_uzyskany_tekst_rozdzialu=rozdzial_na_tekst; end; local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]); if(czy_spis_rzeczy_napis_wprowadzenia_tekstu)then poziom_spisu_tresci=poziom_rozdzialu; czy_jest_spis_tresci=true; elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then if((((poziom_spisu_tresci>0)and(poziom_rozdzialu>0))or((poziom_spisu_tresci<=0)and(poziom_rozdzialu<=0)))and(math.abs(poziom_spisu_tresci or 0)<math.abs(poziom_rozdzialu)))then wliczaj_artykuly_tego_rozdzialu=true; else wliczaj_artykuly_tego_rozdzialu=nil; dalej_nie_rozwazaj_spis_tresci=true; end; end; local function iteratorTekstuNaglowka() local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)"; local iter=nil; local tak=nil; local czy_rozdzial=nil; return function() if(not czy_rozdzial)then if((poziom_rozdzialu or 0)>0)then if(not iter)then iter=mw.ustring.gmatch(rozdzial,"([^\n]+)"); end; local wartosc=iter(); if(not wartosc)then czy_rozdzial=true; iter=nil; else return "","",wartosc,true; end; else czy_rozdzial=true; end; end; local function dane_iteratora() if(not iter)then iter=mw.ustring.gmatch(text,"\n"..re); end; local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=iter(); if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci); return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false; else return nil; end; end; if(not tak)then tak=true; local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=mw.ustring.match(text,"^"..re); if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci); return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false; else return dane_iteratora(); end; end; return dane_iteratora(); end; end; ---- local function LiniaArtykulow(linia) local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod=iter(); if((not szablon) or (not kod) or(not obiekt))then return {};end; local function SzablonAnalizujKompletnosc(szablon) ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- return stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu[nazwa_szablonu]; end); return wynik; end; ----- local tak_pierwsze=((obiekt=="SZABLON") and SzablonAnalizujKompletnosc(szablon) or nil); ----- for szablon,obiekt,kod in iter do if(obiekt=="SZABLON")then local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local tak_drugie=SzablonAnalizujKompletnosc(szablon); if(tak_pierwsze)then if(tak_drugie)then linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")(%s*)("..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")","%1,%2%3"); end; else if(tak_drugie)then linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")(%s*)(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")","%1,%2%3"); end; end; end; end; local tabela_linii_artykulow=mw.text.split(linia,"%s*,%s*",false); for i=1,#tabela_linii_artykulow,1 do tabela_linii_artykulow[i]=mw.ustring.gsub(tabela_linii_artykulow[i],"&#"..mw.ustring.byte(',')..";",","); end; return tabela_linii_artykulow; end; local iterator=iteratorTekstuNaglowka(); local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial])); for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do local nie_pomijaj_tego_rozdzialu=false; if((not przedrostek_listy)or(#przedrostek_listy==0))then local rozdzial,czy_z_kropka=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(((rozdzial)and(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego))or(not rozdzial))then nie_pomijaj_tego_rozdzialu=true; end; else local czy_pominac_ten_rozdzial_jako_linie=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrostek_listy,linia,true,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(not czy_pominac_ten_rozdzial_jako_linie)then nie_pomijaj_tego_rozdzialu=true; else nie_pomijaj_tego_rozdzialu=false; end; end; if(nie_pomijaj_tego_rozdzialu)then local ile=0; local linia_rozwazana=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(linia,nil ,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod--[[,czy_sam_siebie]]) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- local czy_link=linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu] or inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu] or stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu ,tablica_danych_parametrow_szablonu_strony,kod); local czy_szablon=czy_link or szablony_kompletowania_stron_woluminu[nazwa_szablonu] or szablony_licencji[nazwa_szablonu] --or szablony_ozdobne_stron_woluminu[nazwa_szablonu]; if(czy_link)then ile=ile+1;end; return czy_szablon,obiekt,kod; end); elseif(obiekt=="LINKW")then if(specjalne_modul["CzyLinkWewnętrzny"](szablon))then ile=ile+1; return true,obiekt,kod; end; elseif(obiekt=="LINKZ")then ile=ile+1; return true,obiekt,kod; end; end); ---- local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$"); local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$") or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$")))) or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil); ---- local nowa_linia=false; local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana) return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare) --if((czy_spis_rzeczy_napis_wprowadzenia_tekstu)and(numer_podtablicy_w_tablicy>2))then return;end; if((czy_rozdzial_centrowany)and(w_rozdziale)and(czy_linia_uwzgledniana)and(tab_stare[2])and(tab_stare[2][1]))then tab_stare[2][1]=tab_stare[2][1]+1; end; if(not w_rozdziale)then local function CzyZaliczac() return ((not mw.ustring.match(linia,"^%w+%p+")) and mw.ustring.match(linia,"^%s*'*%s*%w+")); --or mw.ustring.match(linia,"^%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("LINKZ")); end; if(nowa_linia)then tab_stare[2][4]=true; table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); elseif(((poziom_rozdzialu)or(#(przedrostek_listy or "")>0))and((ile>1)or(CzyZaliczac())))then nowa_linia=true; numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1; tabela_artykulow[numer_rozdzialu_w_ksiazce]={}; tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce]; ---- local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,}; tab_stare[2][4]=true; tab_stare[6]=(numer_podtablicy_w_tablicy>2) and 0 or nil; tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy]={}; table.insert(tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy],tab_stare); else table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); end; else table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare); end; end; end; local function AnalizaLiniiObiekty(linia_rozwazana) local tab_linia=LiniaArtykulow(linia_rozwazana); for k=1,#tab_linia,1 do local iterator2=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tab_linia[k],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); local tab_nieobslugiwane=nil; for szablon,obiekt,kod in iterator2 do local czy_szablon=(obiekt=="SZABLON");local czy_link=((obiekt=="LINKW")or(obiekt=="LINKZ")); if(czy_szablon or czy_link)then local przerwij=nil; if(czy_szablon)then ---- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu ,tabela_modyfikatorow) ---- --local przerwij=nil; local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then if(tabela_spisu[1]==true)then --local tabela_parametrow_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil ,tablica_danych_parametrow_szablonu_strony,kod); local numer_link=tabela_spisu["numer_link"]; for name,value in pairs(tabela_parametrow_szablonu)do if(name~=numer_link)then local kod_w_nie_obslugiwanych=tabela_parametrow_szablonu[name]; local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(kod_w_nie_obslugiwanych,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); if(not tab_nieobslugiwane)then tab_nieobslugiwane={};end; for szablon,obiekt,kod in iter do if(not tab_nieobslugiwane[obiekt])then tab_nieobslugiwane[obiekt]={};end; tab_nieobslugiwane[obiekt][kod]=true; end; end; end; local tyt=tabela_parametrow_szablonu[numer_link]; przedrostek_listy=""; tekstowy_przedrostek,szablon=mw.ustring.match(tyt,"^'*[^%S\n]*([%d%.]*)[^%S\n]*([^\n]-)'*$"); przerwij=true; else przedrostek_listy=""; tekstowy_przedrostek=tabela_parametrow_szablonu[tabela_spisu["numer"]]; szablon=tabela_parametrow_szablonu[tabela_spisu["link"]]; przerwij=true; end; end; end); end; --[[if(przerwij)then local iterator3=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon2,obiekt2,kod2 in iterator3 do if(obiekt2=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon2,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod2); local tabela_linku=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_linku)then szablon=szablon2; break; end; elseif(obiekt2=="LINKW")then szablon=szablon2; break; end; end; end;]] local pozycja_artykulu=nil;local nazwa=nil; local tab_pozycja_elementow_w_spisie_rzeczy;local numer_rodzaju_artykulu_poprz;local id;local parametry_szablonu;local kom; local link_szablon=nil; local czy_obslugiwane=nil; local CzyObslugiwane=function() local wartosc=((tab_nieobslugiwane[obiekt])and(tab_nieobslugiwane[obiekt][kod])); czy_obslugiwane=wartosc; return (not wartosc); end; if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then local linia_artykokow=tab_linia[k]; numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]); --mw.log() if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil; end; --mw.logObject(tabela_rozdzial_artykulow) else link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil; end; --[[if(przerwij)then break;end;]] if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then --- local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu_licencji,nazwa_szablonu_licencji,tabela_modyfikatorow_licencji) if(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu_licencji])then if(tabela_parametrow_szablonu_licencji)then local autor=tabela_parametrow_szablonu_licencji["Autor"]; local szkoly=tabela_parametrow_szablonu_licencji["Ukończone szkoły"]; local email=tabela_parametrow_szablonu_licencji["Email"]; local dotyczy=tabela_parametrow_szablonu_licencji["Dotyczy"]; local licencjonowanie=tabela_parametrow_szablonu_licencji["Licencjonowanie"]; local umowa_prawna=tabela_parametrow_szablonu_licencji["Umowa prawna"]; local konsekwencje=tabela_parametrow_szablonu_licencji["Konsekwencje"]; local frame=mw.getCurrentFrame(); if(autor~=nil)then autor=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(autor,pelna_nazwa_spisu_tresci ,tablica_analizy_obiektow_strony_dany_modul);} end; if(szkoly~=nil)then szkoly=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szkoly,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(email~=nil)then email=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(email,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(dotyczy~=nil)then dotyczy=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(dotyczy,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(licencjonowanie~=nil)then licencjonowanie=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(licencjonowanie,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(umowa_prawna~=nil)then umowa_prawna=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(umowa_prawna,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(konsekwencje~=nil)then konsekwencje=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(konsekwencje,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);} end; if(autor~=nil)then tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje}; licencja_z_autorem=false; end; return true; 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); if(wynik)then break;end; end; end; end; end; end; if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end; end; end; numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1; end; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ---rozdzial_tab[1]=rozdzial;rozdzial_tab[2]=linia rozdziału AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany); if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil); end; --mw.logObject(tabela_artykulow); if(czy_artykul_korzystany)then return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci; else return tabela_artykulow,nil,przekierowanie_spisu_tresci; end; end; function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow) local parametry_modul=require("Module:Parametry"); if(not parametry_modul.TypeTable(tabela_artykulow))then return;end; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu; local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci); setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter); for _,tab_lista in ipairs(tabela_artykulow)do if(tab_lista[2])then for _,artykul_w_bazie_element in ipairs(tab_lista[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(jakie_spisy_tresci[artykul_bez_naglowka_w_bazie])then return artykul_bez_naglowka_w_bazie; end; end; end; end; end; function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH) local adres_ksiazki_glownego_spisu_tresci=nil; local techniczne_modul=require("Module:Techniczne"); local nazwy_modul=require("Module:Nazwy"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local ile2,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki,tekst=true,}; if(ile2>0)then local strona_spisu_tresci=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki); if(strona_spisu_tresci)then local html_modul=require("Module:Html"); strona_spisu_tresci=html_modul.DecodeHtml(strona_spisu_tresci,true); local tabela_nazw={}; local nazwa_przestrzeni2=nazwy_modul["NAZWAPRZESTRZENI"](strona_spisu_tresci,tabela_nazw); local nazwa_przestrzeni_ksiazki2=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_spisu_tresci,tabela_nazw); local nazwa_ksiazki2=(nazwa_przestrzeni_ksiazki2=="") and nazwy_modul["NAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw) or nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw); ---- if((nazwa_przestrzeni~=nazwa_przestrzeni2)or(nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki2)or(nazwa_ksiazki~=nazwa_ksiazki2))then if(((nazwa_przestrzeni2==nazwy_np_modul.Main)or(nazwa_przestrzeni2==nazwy_np_modul.Wikijunior))or(((nazwa_przestrzeni2==nazwy_np_modul.Wikibooks)or(nazwa_przestrzeni2==nazwy_np_modul.User))and(nazwa_przestrzeni_ksiazki2~="")))then ---- adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,}; local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil; if((wynik or 0)==1)then return 1; end; ---- nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki=nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2; pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); else return 2; end; end; end; end; local parametry_modul=require("Module:Parametry"); local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer) if((parametry_modul.TypeTable(tablista_artykulow)) and parametry_modul["CzySąElementyTablicy"](tablista_artykulow))then local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci); local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci; ---- local przekierowanie_strona=czy_spis_tresci_table and spis_tresci[2] or nil; local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,}; --- if(not tablista_artykulow[1][1][2][1])then for numer,tab_lista in ipairs(tablista_artykulow[1])do if(numer>1)then tab_element[numer]=tab_lista; end; end; table.remove(tablista_artykulow,1); end; --- for _,tab_lista in ipairs(tablista_artykulow)do local numer_rozdzialu=tab_lista[1][2][1]; local czy_rozdzial_centrowany=tab_lista[1][2][4]; if(numer_rozdzialu>0)then tab_lista[1][2][1]=numer_rozdzialu+1; end; if(czy_rozdzial_centrowany)then break;end; end; --- numer=numer+1; --- --if(not tablista_artykulow)then tablista_artykulow={};end; ---- table.insert(tablista_artykulow,1,tab_element); if(spis_tresci)then if(not tab_inne_spisy)then tab_inne_spisy={};end; table.insert(tab_inne_spisy,spis_tresci); if(not tablista_artykulow[1][2])then tablista_artykulow[1][2]={};end; local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,}; table.insert(tablista_artykulow[1][2],1,tab_stare); end; end; return tablista_artykulow,tab_inne_spisy,numer; end; local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer) --mw.logObject(tablista_artykulow,"TYTAn123fhh"); local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH); --mw.logObject(tablista_artykulow_iter,spis_tresci); ---- if((tablista_artykulow_iter)and(parametry_modul.TypeTable(tablista_artykulow_iter)))then tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer); for _,value in ipairs(tablista_artykulow_iter)do if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end; table.insert(tablista_artykulow,value); end; end; return tablista_artykulow,tab_inne_spisy,numer; end; local function SpisRzeczy(tabela_artykulow,tab_inne_spisy) local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow) if(artykul_spisu_rzeczy)then local numer=1; tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer); tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer); end; return tabela_artykulow,tab_inne_spisy; end; local adres_ustawien=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "").."NawigacjaSpecjalna/Nawigacja/"..pelna_nazwa_ksiazki; ---- adres_ustawien=techniczne_modul.PrzekierowanieDoStrony(adres_ustawien) or adres_ustawien; ---- local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,}; if(not tekst)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji={}; local szablonowe_modul=require("Module:Szablonowe"); local tekst_zakodowany=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,nil,nil); local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty'); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zakodowany,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji); local szablon_uklad_autonawigacji; local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={}; local tabela_parametrow_szablonu_uklad_autonawigacji; local nazwa_szablonu_uklad_autonawigacji; local tabela_modyfikatorow_uklad_autonawigacji; local adres_ustawien_szablonowy=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](adres_ustawien,nil,nil); for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,kod,adres_ustawien_szablonowy,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) tabela_parametrow_szablonu_uklad_autonawigacji=tabela_parametrow_szablonu; nazwa_szablonu_uklad_autonawigacji=nazwa_szablonu; tabela_modyfikatorow_uklad_autonawigacji=tabela_modyfikatorow; if(nazwa_szablonu==stronicowyparser_obiekty_modul.uklad_autonawigacji)then szablon_uklad_autonawigacji=szablon; return true; end; end); if(wynik)then break;end; end; end; if(not szablon_uklad_autonawigacji)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; --local tabela_parametrow_szablonu_uklad_autonawigacji,nazwa_szablonu_uklad_autonawigacji,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon_uklad_autonawigacji); if(not tabela_parametrow_szablonu_uklad_autonawigacji)then local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); local tab_inne_spisy; tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local parametry_modul=require("Module:Parametry"); local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"]; ---- local html_modul=require("Module:Html"); ---- local czy_automat_manualny=(automat_manualny) and parametry_modul.CzyTak(automat_manualny) or nil; if(czy_automat_manualny)then local sub_nazwa_spis_tresci; local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"]; spis_tresci=spis_tresci and html_modul.DecodeHtml(spis_tresci,true) or nil; if(parametry_modul.CzyTak(spis_tresci))then local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local pelna_nazwa_ksiazki_spisu_tresci=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci,tabela_nazw); if(pelna_nazwa_ksiazki_spisu_tresci==pelna_nazwa_ksiazki)then sub_nazwa_spis_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci,tabela_nazw); else sub_nazwa_spis_tresci=""; end; else sub_nazwa_spis_tresci=""; end; local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil); return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci; end; local frame=mw.getCurrentFrame(); for name,value in pairs(tabela_parametrow_szablonu_uklad_autonawigacji)do tabela_parametrow_szablonu_uklad_autonawigacji[name]=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(value,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,function(szablon,obiekt,kod) if(obiekt=="ZMIENNA")then szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)|([^{}]-)}}}","{{(((}}%1{{!}}%2{{)))}}"); szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)}}}","{{(((}}%1{{)))}}"); return szablon; end; end),}; end; local nazwy_modul=require("Module:Nazwy"); local bez_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez spisów treści"]; local czy_bez_spisow_tresci=(bez_spisow_tresci) and parametry_modul.CzyTak(bez_spisow_tresci) or nil; local bez_analizy_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez analizy spisów treści"]; local czy_bez_analizy_spisow_tresci=(bez_analizy_spisow_tresci) and parametry_modul.CzyTak(bez_analizy_spisow_tresci) or nil; ---- local tab_inne_spisy;local nazwa_glownego_spisu; local tablista_artykulow; local licencja; local numer=1; ---- --local pelna_nazwa_spisu_tresci=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); ---- local tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;local tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;local przekierowanie_spisu_tresci; if(not czy_bez_spisow_tresci)then local spis_tresci_main=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"]; if(spis_tresci_main)then spis_tresci_main=html_modul.DecodeHtml(spis_tresci_main,true); --- spis_tresci_main=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci_main,[2]=pelna_nazwa_ksiazki,}; end; local tabela_nazw={}; local pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci=parametry_modul.CzyTak(spis_tresci_main) and nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci_main,tabela_nazw) or pelna_nazwa_ksiazki; if(pelna_nazwa_ksiazki~=pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci)then return 0; end; nazwa_glownego_spisu=parametry_modul.CzyTak(spis_tresci_main) and nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci_main,tabela_nazw) or ""; else nazwa_glownego_spisu=""; end; if((not czy_bez_spisow_tresci)and(not czy_bez_analizy_spisow_tresci))then tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH); if(przekierowanie_spisu_tresci)then nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,}; end; if((not tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika)or(tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika==0))then return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika; end; local IteratorSpisTresci=function() local liczba=1; return function() local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba]; liczba=liczba+1; return spis_tresci; end; end; local iter=IteratorSpisTresci(); tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika; licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika; tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer); local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow); if(artykul_spisu_rzeczy)then tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer); end; for spis_tresci in iter do --- if(not parametry_modul.CzyTak(spis_tresci))then return;end; spis_tresci=html_modul.DecodeHtml(spis_tresci,true); spis_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci,[2]="",}; --- tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer); end; end; ---- local IteratorFun=function() local liczba=1; local STRONA=function(liczba)return liczba*2-1;end; local NAZWA=function(liczba)return liczba*2;end; return function() local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)]; local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)]; liczba=liczba+1; return strona,nazwa; end; end; local tablica_stron_ksiazki={}; local tablica_stron_inne={}; local iter=IteratorFun(); local ksiazkawe_modul=require("Module:Książkowe"); local pudelko_modul=require("Module:Pudełko"); local wiki_modul=require("Module:Wiki"); local dodatkowe_artykuly=nil; local tablica_artykulow_zebranych={}; local tab_nazwa_spisow_przekierowaniowych={}; local dodatkowe_artykuly=nil; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne") local tabela_rozdzial_artykulow=nil; ---- local pelna_nazwa_spisu_tresci=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci); ---- --local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={}; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local DekodowanieTekstu=stronicowyparser_potrzebne_modul.DekodowanieTekstu(adres_ustawien,adres_ustawien_szablonowy,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); for strona,nazwa in iter do local function ZbieranieDanychStronZAutonawigacji() if(not parametry_modul.CzyTak(strona))then return;end; strona=html_modul.DecodeHtml(strona,true); nazwa=parametry_modul.CzyTak(nazwa) and html_modul.DecodeHtml(nazwa,true) or nil; if(not dodatkowe_artykuly)then if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end; table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,}); tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow]; end; --- strona=DekodowanieTekstu(strona,2,nil); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,}; local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare) if(not dodatkowe_artykuly)then dodatkowe_artykuly={};end; ---- local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]); local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1]; local czy_w_podreczniku=tab_stare[5]; local kod_jezyka_koncowy=czy_table_baza_artykulu and tab_stare[1][5] or nil; local kod_projektu_koncowy=czy_table_baza_artykulu and tab_stare[1][6] or nil; ---- table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,}); ---- table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare); end; local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy; numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,true,{strona,nazwa,},nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",adres_ustawien,adres_ustawien_szablonowy,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,tab_nazwa_spisow_przekierowaniowych,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]"); end; ZbieranieDanychStronZAutonawigacji(); end; ---- return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci; end; return p; tfv7iofukvj2r9qm34titv5ld8qscgg Moduł:Specjalne 828 58949 557781 557617 2026-09-27T13:19:36Z Persino 2851 557781 Scribunto text/plain local p={}; local function GranicznieSzereg(wzor,czy_granicznie) return (czy_granicznie and "^" or "")..wzor..(czy_granicznie and "$" or ""); end; function p.ZnakiSpecjalneAnulowaniaIchZnaczeniaTagowegoMediaWiki(szablon) local specjalne_modul=mw.loadData("Module:Specjalne/dane"); local tab_specjalne_znaki=specjalne_modul.szablony_anulowania_znaczeniowego_tagowego_mediawiki; szablon=mw.ustring.gsub(szablon,"[<>]",tab_specjalne_znaki); return szablon; end; p["UsuńŚciśleOkreśloneKategorie"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr("tekst") or PobierzParametr(1); local kategoria=PobierzParametr("kategoria") or PobierzParametr(2) if(kategoria)then kategoria=mw.ustring.gsub(kategoria,"^[%s_]*",""); kategoria=mw.ustring.gsub(kategoria,"[%s_]*$",""); kategoria=mw.ustring.gsub(kategoria,"[%s_]+","[%%s_]+"); else kategoria="([^%[%]|]*)"; end; local czy_granicznie=PobierzParametr("granicznie") or PobierzParametr(3); czy_granicznie=parametry_modul.CzyTak(czy_granicznie); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local category=nazwy_np_modul.Category; local wzorcategory=require("Module:Techniczne")["WzórDanejPrzestrzeniNazw"](category); tekst=mw.ustring.gsub(tekst,GranicznieSzereg("%[%[[%s_]*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy][%s_]*:[%s_]*"..kategoria.."[%s_]*%]%]",czy_granicznie),""); tekst=mw.ustring.gsub(tekst,GranicznieSzereg("%[%[[%s_]*"..wzorcategory.."[%s_]*:[%s_]*"..kategoria.."[%s_]*%]%]",czy_granicznie),""); tekst=mw.ustring.gsub(tekst,GranicznieSzereg("%[%[[%s_]*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy][%s_]*:[%s_]*"..kategoria.."[%s_]*|[^%[%]]*%]%]",czy_granicznie),""); tekst=mw.ustring.gsub(tekst,GranicznieSzereg("%[%[[%s_]*"..wzorcategory.."[%s_]*:[%s_]*"..kategoria.."[%s_]*|[^%[%]]*%s*%]%]",czy_granicznie),""); return tekst; end; p["UsuńKategorie"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1); local czy_granicznie=PobierzParametr("granicznie") or PobierzParametr(2); czy_granicznie=parametry_modul.CzyTak(czy_granicznie); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local category=nazwy_np_modul.Category; local wzorcategory=require("Module:Techniczne")["WzórDanejPrzestrzeniNazw"](category); argument_pierwszy=mw.ustring.gsub(argument_pierwszy,GranicznieSzereg("%[%[%s*"..wzorcategory.."%s*:[^%[%]]*%]%]",czy_granicznie),""); argument_pierwszy=mw.ustring.gsub(argument_pierwszy,GranicznieSzereg("%[%[%s*[CC][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%[%]]*%]%]",czy_granicznie),""); return argument_pierwszy; end; p["UsuńZnaczniki"]=function(frame,jakie,funkcja1,funkcja2) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_ze_znacznikiem=PobierzParametr("tekst") or PobierzParametr(1); argument_ze_znacznikiem=funkcja1 and funkcja1(argument_ze_znacznikiem) or argument_ze_znacznikiem; if(not jakie)then argument_ze_znacznikiem=mw.ustring.gsub(argument_ze_znacznikiem,"(</?%s*[^<>]+/?>)",""); else argument_ze_znacznikiem=mw.ustring.gsub(argument_ze_znacznikiem,"(</?%s*"..jakie.."%s+[^<>]*/?>)",""); argument_ze_znacznikiem=mw.ustring.gsub(argument_ze_znacznikiem,"(</?%s*"..jakie.."%s*/?>)",""); end; argument_ze_znacznikiem=funkcja2 and funkcja2(argument_ze_znacznikiem) or argument_ze_znacznikiem; return argument_ze_znacznikiem; end; p["UsuńKomentarze"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_ze_znacznikiem=PobierzParametr("tekst") or PobierzParametr(1); argument_ze_znacznikiem=mw.ustring.gsub(argument_ze_znacznikiem,"<!%-%-.-%-%->",""); return argument_ze_znacznikiem; end; p["UsuńSzablonyStylów"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_ze_znacznikiem=PobierzParametr("tekst") or PobierzParametr(1); local html_dane_modul=mw.loadData("Module:Html/dane"); local szablonowe_modul=require("Module:Szablonowe"); argument_ze_znacznikiem=mw.ustring.gsub(argument_ze_znacznikiem,szablonowe_modul.NormaWzoruKodowaniaTekstu("templatestyles","%w+"),""); return argument_ze_znacznikiem; end; p["UsuńWywołaniaPlików"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1); local czy_granicznie=PobierzParametr("granicznie") or PobierzParametr(2); czy_granicznie=parametry_modul.CzyTak(czy_granicznie); local wartosc=mw.ustring.gsub(argument_pierwszy,GranicznieSzereg("%[%[[%s_]*[Pp][Ll][Ii][Kk][%s_]*:[^%[%]]*%]%]",czy_granicznie),""); wartosc=mw.ustring.gsub(wartosc,GranicznieSzereg("%[%[[%s_]*[Ff][Ii][Ll][Ee][%s_]*:[^%[%]]*%]%]",czy_granicznie),""); wartosc=mw.ustring.gsub(wartosc,GranicznieSzereg("%[%[[%s_]*[Ii][Mm][Aa][Gg][Ee][%s_]*:[^%[%]]*%]%]",czy_granicznie),""); wartosc=mw.ustring.gsub(wartosc,GranicznieSzereg("%[%[[%s_]*[Gg][Rr][Aa][Ff][Ii][Kk][Aa][%s_]*:[^%[%]]*%]%]",czy_granicznie),""); return wartosc; end; p["UsuńInterwiki"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1); local czy_granicznie=PobierzParametr("granicznie") or PobierzParametr(2); czy_granicznie=parametry_modul.CzyTak(czy_granicznie); local pudelko_modul=require("Module:Pudełko"); ---- local function usun_interwiki(interwiki) local wartosc=mw.ustring.match(interwiki,"%[%[[%s_]*([^:]*[^:%s_])[%s_]*:[^%[%]]*%]%]"); if(wartosc)then wartosc=mw.getContentLanguage():lc(wartosc); local czy_kod_jezyka_istnieje=mw.language.isKnownLanguageTag(wartosc); if(czy_kod_jezyka_istnieje)then if(wartosc==pudelko_modul["Kod języka tego projektu"](frame))then return interwiki; else return ""; end; end; end; return interwiki; end; --- return mw.ustring.gsub(argument_pierwszy,GranicznieSzereg("(%[%[[^%[%]]*%]%])",czy_granicznie),function(s)return usun_interwiki(s);end); end; p["UsuńZnakiSpecjalne"] = function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1); local wartosc=argument_pierwszy; repeat local ile; wartosc,ile=mw.ustring.gsub(wartosc,"'''([^'].-)'''","%1"); until (ile==0); repeat local ile; wartosc,ile=mw.ustring.gsub(wartosc,"''([^'].-)''","%1"); until (ile==0); repeat local ile1;local ile2; wartosc,ile1=mw.ustring.gsub(wartosc,"'''",""); wartosc,ile2=mw.ustring.gsub(wartosc,"''",""); until ((ile1==0)and(ile2==0)); return wartosc; end; p["UsuńZbędneBiałeZnaki"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1); argument_pierwszy=mw.ustring.gsub(argument_pierwszy,"^%s*",""); argument_pierwszy=mw.ustring.gsub(argument_pierwszy,"%s*$",""); argument_pierwszy=mw.ustring.gsub(argument_pierwszy,"%s+"," "); return argument_pierwszy; end; p["ZamieńLinkiWewnętrzneNaTekst"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1); local czy_granicznie=PobierzParametr("granicznie") or PobierzParametr(2); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local nazwy_modul=require("Module:Nazwy"); local pudelko_modul=require("Module:Pudełko"); local html_modul=require("Module:Html"); local function LinkiZamienianieNaZawartoscLubNazwe(link,dwukropek,zawartosc,nazwa) local prefix=mw.ustring.match(zawartosc,"^[%s_]*([^:]*[^:%s_])[%s_]*:"); if(prefix)then local czy_kod_jezyka_istnieje=mw.language.isKnownLanguageTag(prefix); if(czy_kod_jezyka_istnieje)then if(#dwukropek>0)then return nazwa or html_modul.DecodeHtml(zawartosc,true); elseif(prefix==pudelko_modul["Kod języka tego projektu"](frame))then return nazwa or html_modul.DecodeHtml(zawartosc,true); else return link; end; else local nazwa_przestrzeni=nazwy_modul.Np{nazwa=prefix,istnieje="tak",["wynik błędu nietekstowy"]="tak"}; if(not nazwa_przestrzeni)then return nazwa or zawartosc;end; if((nazwa_przestrzeni==nazwy_np_modul.Category)or(nazwa_przestrzeni==nazwy_np_modul.File))then if(#dwukropek>0)then return nazwa or html_modul.DecodeHtml(zawartosc,true); else return link; end; else return nazwa or html_modul.DecodeHtml(zawartosc,true); end; end; else return nazwa or html_modul.DecodeHtml(zawartosc,true); end; end; ----- local wartosc=mw.ustring.gsub(argument_pierwszy,GranicznieSzereg("(%[%[(:?)/([^/{}|%[%]][^{}|%[%]]-)/+%]%])",czy_granicznie),LinkiZamienianieNaZawartoscLubNazwe); wartosc=mw.ustring.gsub(wartosc,GranicznieSzereg("(%[%[(:?)/([^/{}|%[%]][^{}|%[%]]-)/+|(..-)%]%])",czy_granicznie),LinkiZamienianieNaZawartoscLubNazwe); ----- wartosc=mw.ustring.gsub(wartosc,GranicznieSzereg("(%[%[(:?)([^{}|%[%]]+)%]%])",czy_granicznie),LinkiZamienianieNaZawartoscLubNazwe); wartosc=mw.ustring.gsub(wartosc,GranicznieSzereg("(%[%[(:?)([^{}|%[%]]+)|(..-)%]%])",czy_granicznie),LinkiZamienianieNaZawartoscLubNazwe); ---- return wartosc; end; p["ZamieńLinkiZewnętrzneNaTekst"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1); local czy_granicznie=PobierzParametr("granicznie") or PobierzParametr(2); local function SprawdzanieCzyLinkPozaProjektowyPoprawny(link) local strony_modul=require("Module:Strony"); local czy_link=strony_modul.SprawdzanieURL(link); if(czy_link)then return true; end; end; local wartosc=mw.ustring.gsub(argument_pierwszy,GranicznieSzereg("%[%s*([^%[%]%s]+)%s+([^%[%]]*)%]",czy_granicznie),function(a,b) local wynik=SprawdzanieCzyLinkPozaProjektowyPoprawny(a); if(wynik)then return b;end; end); ------ wartosc=mw.ustring.gsub(wartosc,GranicznieSzereg("%[%s*([^%[%]%s]-)%s*%]",czy_granicznie),function(a) local wynik=SprawdzanieCzyLinkPozaProjektowyPoprawny(a); if(wynik)then return a;end; end); return wartosc; end; p["CzyPlik"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1); return mw.ustring.match(argument_pierwszy,"^%[%[[%s_]*([Pp][Ll][Ii][Kk])[%s_]*:.*%]%]$") or mw.ustring.match(argument_pierwszy,"^%[%[[%s_]*([Ff][Ii][Ll][Ee])[%s_]*:.*%]%]$") or mw.ustring.match(argument_pierwszy,"^%[%[[%s_]*([Ii][Mm][Aa][Gg][Ee])[%s_]*:.*%]%]$") or mw.ustring.match(argument_pierwszy,"^%[%[[%s_]*([Gg][Rr][Aa][Ff][Ii][Kk][Aa])[%s_]*:.*%]%]$"); end; p["CzyInterwiki"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1); local pudelko_modul=require("Module:Pudełko"); ---- local function czy_interwiki(interwiki) local wartosc=mw.ustring.match(interwiki,"^%[%[[%s_]*([^:]*[^:%s_])[%s_]*:[^%[%]]*%]%]$"); if(wartosc)then wartosc=mw.getContentLanguage():lc(wartosc); local czy_kod_jezyka_istnieje=mw.language.isKnownLanguageTag(wartosc); if(czy_kod_jezyka_istnieje)then if(wartosc==pudelko_modul["Kod języka tego projektu"](frame))then return nil; else return "tak"; end; end; end; return nil; end; ---- return czy_interwiki(argument_pierwszy); end; p["CzyAdresLinkuWewnętrznego"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local dwukropek=PobierzParametr("dwukropek") or PobierzParametr(1); local adres=PobierzParametr("adres") or PobierzParametr("tekst") or PobierzParametr(2); local pudelko_modul=require("Module:Pudełko"); if(parametry_modul.CzyTak(dwukropek))then return "tak"; else if(not dwukropek)then local czy_dwukropek=mw.ustring.match(adres,"^[:%s_]*:"); if(czy_dwukropek)then return "tak"; end; end; local kod=mw.ustring.match(adres,"^[:%s_]*([^:%s][^:%s]-)[%s_]*:"); if(kod)then kod=mw.getContentLanguage():lc(kod); if(mw.language.isKnownLanguageTag(kod))then local pudelko_modul=require("Module:Pudełko"); if(kod==pudelko_modul["Kod języka tego projektu"]())then return "tak";else return nil;end; end; local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki"); if(wiki_interwiki_modul.interwikimap[kod])then return "tak";end; local nazwy_modul=require("Module:Nazwy"); local przestrzen=nazwy_modul["NAZWAPRZESTRZENI"](adres); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((przestrzen==nazwy_np_modul.File)or(przestrzen==nazwy_np_modul.Category))then return nil;end; end; return "tak"; end; return nil; end; p["CzyLinkWewnętrzny"]=function(szablon) local dwukropek,adres=mw.ustring.match(szablon,"^%[%[[%s_]*(:?)[%s_:]*([^%|%[%]]*)"); return ((p["CzyAdresLinkuWewnętrznego"]{[1]=dwukropek,[2]=adres,})and true or false); end; p["WydzielZwykłyTekst"]=function(frame,funkcja1,funkcja2) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr("tekst") or PobierzParametr(1); local nieklasycznie=PobierzParametr("nieklasycznie") or PobierzParametr(2); nieklasycznie=parametry_modul.CzyTak(nieklasycznie); local preprocess=PobierzParametr("preprocess") or PobierzParametr(3); local preprocess=parametry_modul.CzyTak(preprocess); local kodowanie=PobierzParametr("kodowanie") or PobierzParametr(4); local kodowanie=parametry_modul.CzyTak(kodowanie); local naglowek=PobierzParametr("nagłówek") or PobierzParametr(5); local naglowek=parametry_modul.CzyTak(naglowek); local tablica_analizy_obiektow_strony_dany_modul;local nazwa_modulu; if(kodowanie)then tablica_analizy_obiektow_strony_dany_modul={}; elseif(nieklasycznie)then tablica_analizy_obiektow_strony_dany_modul=PobierzParametr("tablica kodowania") or PobierzParametr(5); nazwa_modulu=PobierzParametr("nazwa modułu") or PobierzParametr(6); end; local function DwaNawiasyLinkowe(tekst) tekst=p["UsuńKategorie"]{tekst,nieklasycznie,}; tekst=p["UsuńWywołaniaPlików"]{tekst,nieklasycznie,}; tekst=p["UsuńInterwiki"]{tekst,nieklasycznie,}; tekst=p["ZamieńLinkiWewnętrzneNaTekst"]{tekst,nieklasycznie,}; return tekst; end; local function JedenNawiasLinkowe(tekst) tekst=p["ZamieńLinkiZewnętrzneNaTekst"]{tekst,nieklasycznie,}; return tekst; end; local function Komentarze(tekst) tekst=p["UsuńKomentarze"](tekst); return tekst; end; local function SzablonyStylowe(tekst) tekst=p["UsuńSzablonyStylów"](tekst); return tekst; end; local function ZnakiSpecjalne(tekst) tekst=p["UsuńZnakiSpecjalne"](tekst); return tekst; end; local function Znaczniki(tekst,jakie,__FUNKCJA1,__FUNKCJA2) tekst=p["UsuńZnaczniki"](tekst,jakie,__FUNKCJA1,__FUNKCJA2); return tekst; end; local function PreProcessFrame(tekst) local frame=mw.getCurrentFrame(); frame=frame.getParent and frame:getParent() or frame; tekst=frame:preprocess(tekst); return tekst; end; if(not nieklasycznie)then if(preprocess)then tekst=p.ZnakiSpecjalneAnulowaniaIchZnaczeniaTagowegoMediaWiki(tekst); tekst=PreProcessFrame(tekst); end; tekst=Komentarze(tekst); tekst=JedenNawiasLinkowe(tekst); tekst=DwaNawiasyLinkowe(tekst); if(not naglowek)then tekst=SzablonyStylowe(tekst); tekst=ZnakiSpecjalne(tekst); tekst=Znaczniki(tekst); end; if(naglowek)then return tekst,Znaczniki,SzablonyStylowe,ZnakiSpecjalne; end; return tekst; end; local szablonowe_modul=require("Module:Szablonowe"); if(kodowanie)then tekst=Komentarze(tekst); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="SZABLON")then local wynik; if(funkcja1)then szablon,wynik=funkcja1(szablon,obiekt,kod); end; if(((not funkcja1) or (szablon))and ((not funkcja2) or funkcja2(szablon,obiekt,kod)))then szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(not funkcja1)then return nil;end; if(obiekt=="SZABLON")then local __szablon,__wynik=funkcja1(szablon,obiekt,kod); if(not __szablon)then return nil;end; return __szablon; end; end); szablon=p.ZnakiSpecjalneAnulowaniaIchZnaczeniaTagowegoMediaWiki(szablon); szablon=PreProcessFrame(szablon); szablon=Komentarze(szablon); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul, nil,nil, function() local numer_szablonu=szablonowe_modul:NumerSzablonuKodowaniaTekstu(nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); return numer_szablonu; end); szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="LINKW")then szablon=DwaNawiasyLinkowe(szablon) return szablon; elseif(obiekt=="LINKZ")then szablon=JedenNawiasLinkowe(szablon) return szablon; elseif(obiekt=="ATRYBUTY")then if(naglowek)then return nil,true; end; return szablon; elseif(obiekt=="ZNACZNIK")then if(naglowek)then return nil,true; end; szablon=Znaczniki(szablon); return szablon; elseif((obiekt=="NOWIKI")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA")or(obiekt=="QUIZ"))then if(naglowek)then return nil,true; end; szablon=Znaczniki(szablon); return szablon; end; return szablon; end); end; return szablon,wynik; else if(obiekt=="LINKW")then szablon=DwaNawiasyLinkowe(szablon); return szablon; elseif(obiekt=="LINKZ")then szablon=JedenNawiasLinkowe(szablon); return szablon; elseif(obiekt=="ATRYBUTY")then if(naglowek)then return nil,true; end; return szablon; elseif(obiekt=="ZNACZNIK")then if(naglowek)then return nil,true; end; szablon=Znaczniki(szablon); return szablon; elseif((obiekt=="NOWIKI")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA")or(obiekt=="QUIZ"))then if(naglowek)then return nil,true; end; szablon=Znaczniki(szablon); return szablon; end; end; return szablon; end); if(not naglowek)then tekst=SzablonyStylowe(tekst); tekst=ZnakiSpecjalne(tekst); end; if(naglowek)then return tekst,Znaczniki,SzablonyStylowe,ZnakiSpecjalne; else return tekst; end; end; p["WydzielLiczbę"] = function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1); --- local wartosc=p["WydzielZwykłyTekst"](argument_pierwszy); ---- local ile; wartosc,ile=mw.ustring.gsub(wartosc,"^([^%d]-)([%+%-]?[%s_]*%d+[%d%s_]-)[%s_]*$","%2"); if(ile==0)then return nil;end; wartosc=mw.ustring.gsub(wartosc,"%s+",""); return tonumber(wartosc); end; p["PrzetwórzNagłówek"]=function(adres,czy_naglowek_linku,czy_nie_rozwin_adres) local Znaczniki,SzablonyStylowe,ZnakiSpecjalne; if(not czy_nie_rozwin_adres)then adres,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=p["WydzielZwykłyTekst"]{tekst=adres,["nagłówek"]=true,preprocess=true,}; else adres,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=p["WydzielZwykłyTekst"]{tekst=adres,["nagłówek"]=true,preprocess=false,}; end; local naglowek=nil; if(czy_naglowek_linku)then local tab_element={}; local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); adres=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(adres,nil,tab_element); adres=Znaczniki(adres,"li"); adres=Znaczniki(adres,"ol"); adres=Znaczniki(adres,"ul"); naglowek=adres; adres=Znaczniki(adres); local szablonowe_modul=require("Module:Szablonowe"); adres=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(adres,nil,tab_element); naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nil,tab_element); naglowek=mw.ustring.gsub(naglowek,"[%[%]]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end); adres=SzablonyStylowe(adres); adres=ZnakiSpecjalne(adres); local html_modul=require("Module:Html"); adres=html_modul.DecodeKoduHTMLZnaku(adres); adres=html_modul.EncodeSpecjalneZnakiHtml(adres); local parametry_modul=require("Module:Parametry"); adres=parametry_modul["Odstępy"]{[1]=adres,[2]="tak",[3]="tak",}; end; return adres,naglowek; end; p["OdstępyZmiennychNumerowanychSzablonu"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local argument_pierwszy=PobierzParametr(1); local lewy=PobierzParametr("lewy"); local parametry_modul=require("Module:Parametry"); local czy_lewy=parametry_modul.CzyTak(lewy); if(czy_lewy)then return mw.ustring.match(argument_pierwszy,"^%s+") or ""; else return mw.ustring.match(argument_pierwszy,"%s+$") or ""; end; end; return p; b8xwxvedihz3n87xx79yl7aj7f3h372 Moduł:Szablonowe 828 58954 557778 557648 2026-09-27T12:53:30Z Persino 2851 557778 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) return szablon; end, funkcja1,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end,__funkcja2,funkcja3); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,czy_ustalanie_szybkie_nazwy,__FUNKCJA,__FUNKCJA2) local czy_kody_w_nazwa; if(czy_ustalanie_szybkie_nazwy)then czy_kody_w_nazwa=mw.ustring.match(nazwa,p.NormaWzoruKodowaniaTekstu()); if(not czy_kody_w_nazwa)then local czy_jest_dwukropek=mw.ustring.match(nazwa,"[%:%&%%]"); if(not czy_jest_dwukropek)then return nazwa,nil; end; end; else czy_kody_w_nazwa=true; end; local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if((__FUNKCJA)and(czy_kody_w_nazwa))then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2)and(czy_kody_w_nazwa)and(not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa,nil; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa) or nil; if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaKompletnaNazwaStrony"]=function(czy_szablon,czy_pelna) if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=czy_pelna and mw.ustring.match(czy_szablon,"^%s*[^:]") or nil; if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; return nazwa_szablonu; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; local nazwa_szablonu=p["SzablonowaKompletnaNazwaStrony"](czy_szablon,true); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,true,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,true,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local function __FUNKCJA2() return true; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,__FUNKCJA2,}); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local wynik=p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); end; end ,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); if(wynik)then return wynik;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; local parametry_modul=require("Module:Parametry"); local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_inna_tabelka,true); for _,value in __next,tab_inna_tabelka,nil do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); ---- local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul,tab_atrybuty); return tab_atrybuty; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,}); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local __metatablica=getmetatable(atrybuty); if(not __metatablica)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(atrybuty); local tab_inna_tabelka={}; for name,value in pairs(tabelka_metatable)do tab_inna_tabelka[value[2]]={name,value[1],}; end; for __name,tab_value in ipairs(tab_inna_tabelka)do table.insert(tab_str," "); table.insert(tab_str,tab_value[1]); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(tab_value[2]))then table.insert(tab_str,"\""..tab_value[2].."\""); else table.insert(tab_str,tostring(tab_value[2])); end; end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa,true); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; 6sicseo9d83d8q6l6uphfqny5j5oqq9 557783 557778 2026-09-27T13:19:43Z Persino 2851 557783 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) return szablon; end, funkcja1,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end,__funkcja2,funkcja3); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,czy_ustalanie_szybkie_nazwy,__FUNKCJA,__FUNKCJA2) local czy_kody_w_nazwa; if(czy_ustalanie_szybkie_nazwy)then czy_kody_w_nazwa=mw.ustring.match(nazwa,p.NormaWzoruKodowaniaTekstu()); if(not czy_kody_w_nazwa)then local czy_jest_dwukropek=mw.ustring.match(nazwa,"[%:%&%%]"); if(not czy_jest_dwukropek)then return nazwa,nil; end; end; else czy_kody_w_nazwa=true; end; local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if((__FUNKCJA)and(czy_kody_w_nazwa))then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2)and(czy_kody_w_nazwa)and(not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa,nil; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa) or nil; if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaKompletnaNazwaStrony"]=function(czy_szablon,czy_pelna) if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=czy_pelna and mw.ustring.match(czy_szablon,"^%s*[^:]") or nil; if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; return nazwa_szablonu; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; local nazwa_szablonu=p["SzablonowaKompletnaNazwaStrony"](czy_szablon,true); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,true,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,true,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local function __FUNKCJA2() return true; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,__FUNKCJA2,}); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local wynik=p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); end; end ,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); if(wynik)then return wynik;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; local parametry_modul=require("Module:Parametry"); local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_inna_tabelka,true); for _,value in __next,tab_inna_tabelka,nil do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,nil,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); ---- local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,nil,tablica_analizy_obiektow_strony_dany_modul,tab_atrybuty); return tab_atrybuty; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,}); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local __metatablica=getmetatable(atrybuty); if(not __metatablica)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(atrybuty); local tab_inna_tabelka={}; for name,value in pairs(tabelka_metatable)do tab_inna_tabelka[value[2]]={name,value[1],}; end; for __name,tab_value in ipairs(tab_inna_tabelka)do table.insert(tab_str," "); table.insert(tab_str,tab_value[1]); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(tab_value[2]))then table.insert(tab_str,"\""..tab_value[2].."\""); else table.insert(tab_str,tostring(tab_value[2])); end; end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa,true); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; 81t5b6wdnfjndhmazv1y5mtuprttev8 557784 557783 2026-09-27T13:27:27Z Persino 2851 557784 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) return szablon; end, funkcja1,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end,__funkcja2,funkcja3); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,czy_ustalanie_szybkie_nazwy,__FUNKCJA,__FUNKCJA2) local czy_kody_w_nazwa; if(czy_ustalanie_szybkie_nazwy)then czy_kody_w_nazwa=mw.ustring.match(nazwa,p.NormaWzoruKodowaniaTekstu()); if(not czy_kody_w_nazwa)then local czy_jest_dwukropek=mw.ustring.match(nazwa,"[%:%&%%]"); if(not czy_jest_dwukropek)then return nazwa,nil; end; end; else czy_kody_w_nazwa=true; end; local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if((__FUNKCJA)and(czy_kody_w_nazwa))then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2)and(czy_kody_w_nazwa)and(not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa,nil; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa) or nil; if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaKompletnaNazwaStrony"]=function(czy_szablon,czy_pelna) if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=czy_pelna and mw.ustring.match(czy_szablon,"^%s*[^:]") or nil; if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; return nazwa_szablonu; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; local nazwa_szablonu=p["SzablonowaKompletnaNazwaStrony"](czy_szablon,true); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,true,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,true,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local function __FUNKCJA2() return true; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,__FUNKCJA2,}); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local wynik=p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); end; end ,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); if(wynik)then return wynik;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; local parametry_modul=require("Module:Parametry"); local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_inna_tabelka,true); for _,value in __next,tab_inna_tabelka,nil do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); ---- local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tab_atrybuty); return tab_atrybuty; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,}); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local __metatablica=getmetatable(atrybuty); if(not __metatablica)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(atrybuty); local tab_inna_tabelka={}; for name,value in pairs(tabelka_metatable)do tab_inna_tabelka[value[2]]={name,value[1],}; end; for __name,tab_value in ipairs(tab_inna_tabelka)do table.insert(tab_str," "); table.insert(tab_str,tab_value[1]); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(tab_value[2]))then table.insert(tab_str,"\""..tab_value[2].."\""); else table.insert(tab_str,tostring(tab_value[2])); end; end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa,true); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; mhbnl7cxwk81byx8em66tkt4hzql8n0 557796 557784 2026-09-28T04:40:26Z Persino 2851 557796 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica) return szablon; end, funkcja1,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end,__funkcja2,funkcja3); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,czy_ustalanie_szybkie_nazwy,__FUNKCJA,__FUNKCJA2) local czy_kody_w_nazwa; if(czy_ustalanie_szybkie_nazwy)then czy_kody_w_nazwa=mw.ustring.match(nazwa,p.NormaWzoruKodowaniaTekstu()); if(not czy_kody_w_nazwa)then local czy_jest_dwukropek=mw.ustring.match(nazwa,"[%:%&%%]"); if(not czy_jest_dwukropek)then return nazwa,nil; end; end; else czy_kody_w_nazwa=true; end; local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if((__FUNKCJA)and(czy_kody_w_nazwa))then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2)and(czy_kody_w_nazwa)and(not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa,nil; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa) or nil; if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaKompletnaNazwaStrony"]=function(czy_szablon,czy_pelna) if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=czy_pelna and mw.ustring.match(czy_szablon,"^%s*[^:]") or nil; if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; return nazwa_szablonu; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; local nazwa_szablonu=p["SzablonowaKompletnaNazwaStrony"](czy_szablon,true); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,true,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,true,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local function __FUNKCJA2() return true; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,__FUNKCJA2,}); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local wynik=p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); end; end ,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); if(wynik)then return wynik;end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa,szablon) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa,szablon); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa,szablon); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; local parametry_modul=require("Module:Parametry"); local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_inna_tabelka,true); for _,value in __next,tab_inna_tabelka,nil do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local szablonowe_metatabelki_modul=require("Module:Szablonowe/Metatabelki"); local function __FUNKCJA() local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); ---- local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tab_atrybuty); return tab_atrybuty; end; local __metatablica={}; szablonowe_metatabelki_modul.MetaTabelkaParsowanieObiektowe(__metatablica,{__FUNKCJA,}); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local __metatablica=getmetatable(atrybuty); if(not __metatablica)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(atrybuty); local tab_inna_tabelka={}; for name,value in pairs(tabelka_metatable)do tab_inna_tabelka[value[2]]={name,value[1],}; end; for __name,tab_value in ipairs(tab_inna_tabelka)do table.insert(tab_str," "); table.insert(tab_str,tab_value[1]); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(tab_value[2]))then table.insert(tab_str,"\""..tab_value[2].."\""); else table.insert(tab_str,tostring(tab_value[2])); end; end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa,true); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; qpiuv4uz5ackgk586zeu7esggsur5ah Moduł:Szablonowe/Potrzebne 828 60145 557774 551684 2026-09-27T12:53:20Z Persino 2851 557774 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; 712fjnqgjl9eo8pnfnwoz5d9o1n58hh 557782 557774 2026-09-27T13:19:38Z Persino 2851 557782 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; t4iimc8oevo7ai9rn8ypenc9vnup3ga 557795 557782 2026-09-28T04:32:29Z Persino 2851 557795 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; f1k8lmv80gh4i2frtu4f17yl88v06g8 557807 557795 2026-09-28T10:00:55Z Persino 2851 557807 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; awl4synl9cp3863iyyqryqez8uk6zd7 Moduł:StronicowyParser/AnalizaSpisuRzeczy 828 60192 557776 557753 2026-09-27T12:53:25Z Persino 2851 557776 Scribunto text/plain local p={}; function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end; local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od); if((a)and(b)and(a>b))then return;end; if((not liczba_do)or(b<=liczba_do))then return a,b,c,d,e,f,g,h,i,j,k; end; return nil; else if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end; local liczba_start=liczba_do or 1; local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba_od)))then return a,b,c,d,e,f,g,h,i,j,k; elseif((b1)and(b1==liczba_od))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; end; a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9; local dlugosc_tekstu_wyszukiwanego=#tekst; if(not czy_od_tylu)then if((not liczba_od)or(liczba_od==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; end; end; end; else if(liczba_od==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then tak=true; break; elseif(czy_okladka)then tak=true; break; end; end; end; return (not tak); end; function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,bez_innych_stron) local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((czy_element_spisu)and((czy_wszystkie_linki)or(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((bez_innych_stron)and(numer_rodzaju_artykulu>1)))))then return true; end; end; start=koniec_szablon; else return false; end; end; end; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true); if(czy_zerowy_spis_rzeczy)then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2) local liczba_start;local liczba_koniec; local liczba_wys=liczba_od; local spis_naglowka; local spis_naglowka_stare; local spis_naglowka_poziom; while(true)do local __liczba_start,__liczba_koniec,wartosc_przechwycona; if(czy_rozdzial_rownaniowy_dodatni)then __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu) else __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu); end; if(__liczba_start)then if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end; local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona); local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka) if(czy_spis_tresci)then spis_naglowka_stare=naglowek; spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; if(czy_spis_tresci(spis_naglowka))then liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; else spis_naglowka=naglowek; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; return true; end); if(not wynik)then break; end; else break; end; end; if(liczba_start)then return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom; end; end; local obiekt="SZABLON"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(naglowek,nil); end; end; else local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu]; if(naglowek)then local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if((naglowek)and(poziom_naglowka))then return __FUNKCJA(naglowek,poziom_naglowka); end; end; end; end; return true; end); return wynik; end); local obiekt="ZNACZNIK"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="center")then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(zawartosc,nil); end; end; elseif(znaczniki_wprowadzenia_tekstu[nazwa])then if(zawartosc)then local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); if(numer_rozdzialu)then return __FUNKCJA(zawartosc,numer_rozdzialu); end; end; end; return true; end); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*"; local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( wzor_rozdzialu_dodatniego, true, function(naglowek) return naglowek,naglowek; end, function(naglowek,_,__FUNKCJA) local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then return __FUNKCJA(naglowek,poziom_naglowka); end; return true; end); if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom) local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka; if((not czy_spis_tresci)and(spis_naglowka))then spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; end; return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom); elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom); elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; local zawartosc; if(not czy_numer_parametru_naglowka)then czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(not czy_numer_parametru_naglowka)then return nil;end; local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc_szablonu)then return nil;end; zawartosc_szablonu=mw.text.trim(zawartosc_szablonu); local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu); if((not naglowek)or(not poziom_naglowka))then return nil;end; zawartosc=naglowek; else zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc)then return nil;end; end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; local szablonowe_modul=require("Module:Szablonowe"); while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")); if(czy_pomiedzy_naglowkami and(((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) )--[[or( not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu()) )]]) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1; elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local czy_rozdzial_dwukropkowy; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_rozdzial)then liczba_start=liczba_start_rozdzial; else czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$"); liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; czy_spis=((czy_rozdzial_dwukropkowy)and(not tak))and true or nil; else liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; czy_spis=czy_rozdzial_dwukropkowy and true or nil; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_nieoddzielone,czy_wszystkie_linki) local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return true; else local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=czy_nieoddzielone or mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return true; end; end; else return false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return false; end; end; function p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,linia,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,false); if(czy_znalezione)then return liczba_linki_nierozdzialowe_szablonu,true;end; return liczba_spisowa,false; end; else return liczba_spisowa,false; end; end; end; function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz) local liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; return liczba_start,true; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; return liczba_start,true; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if((not liczba_start_naglowek_przed)or(liczba_start_sugerowane>liczba_start_naglowek_przed))then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if((not liczba_start_naglowek_przed)or(liczba_start_nowa>liczba_start_naglowek_przed))then liczba_start=liczba_start_nowa; end; else liczba_start=liczba_start_sugerowane; end; end; else liczba_start=liczba_start_sugerowane; end; return liczba_start,false; end; function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return liczba_koniec; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return liczba_koniec; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; return liczba_koniec; end; end; return liczba_koniec; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and( ( (lista_szablon~="")and( (przerwa_szablon=="") or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<"))) or(not mw.ustring.match(lista_szablon,"^:")) ) ) or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))) )); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_spis_tresci) or liczba_przed_rozdzialem); local czy_break; liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed,liczba_start_naglowek_przed,czy_znajdz); if(czy_break)then break;end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); local czy_break; liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,nil,czy_znajdz); if(czy_break)then break;end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,linia,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_znalezione=nil; if(liczba_start<=liczba_obiekt_start)then czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); end; if(czy_znalezione)then liczba_koniec=p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local czy_znalazles_linki=p.SzukajObiektuArtykularnegoWeElemencieTekstowym(rozdzial,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true,true,true); if(czy_znalazles_linki)then liczba_koniec=liczba_rozdzial_koniec;end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); --mw.log(tekst,"TYTAN123") return tekst; end; return p; 8otu83kex1l5bf8uoi4e3o2mymuqidj 557786 557776 2026-09-27T14:08:33Z Persino 2851 557786 Scribunto text/plain local p={}; function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end; local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od); if((a)and(b)and(a>b))then return;end; if((not liczba_do)or(b<=liczba_do))then return a,b,c,d,e,f,g,h,i,j,k; end; return nil; else if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end; local liczba_start=liczba_do or 1; local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba_od)))then return a,b,c,d,e,f,g,h,i,j,k; elseif((b1)and(b1==liczba_od))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; end; a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9; local dlugosc_tekstu_wyszukiwanego=#tekst; if(not czy_od_tylu)then if((not liczba_od)or(liczba_od==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; end; end; end; else if(liczba_od==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then tak=true; break; elseif(czy_okladka)then tak=true; break; end; end; end; return (not tak); end; function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,bez_innych_stron) local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((czy_element_spisu)and((czy_wszystkie_linki)or(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((bez_innych_stron)and(numer_rodzaju_artykulu>1)))))then return true; end; end; start=koniec_szablon; else return false; end; end; end; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true); if(czy_zerowy_spis_rzeczy)then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2) local liczba_start;local liczba_koniec; local liczba_wys=liczba_od; local spis_naglowka; local spis_naglowka_stare; local spis_naglowka_poziom; while(true)do local __liczba_start,__liczba_koniec,wartosc_przechwycona; if(czy_rozdzial_rownaniowy_dodatni)then __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu) else __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu); end; if(__liczba_start)then if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end; local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona); local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka) if(czy_spis_tresci)then spis_naglowka_stare=naglowek; spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; if(czy_spis_tresci(spis_naglowka))then liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; else spis_naglowka=naglowek; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; return true; end); if(not wynik)then break; end; else break; end; end; if(liczba_start)then return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom; end; end; local obiekt="SZABLON"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(naglowek,nil); end; end; else local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu]; if(naglowek)then local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if((naglowek)and(poziom_naglowka))then return __FUNKCJA(naglowek,poziom_naglowka); end; end; end; end; return true; end); return wynik; end); local obiekt="ZNACZNIK"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="center")then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(zawartosc,nil); end; end; elseif(znaczniki_wprowadzenia_tekstu[nazwa])then if(zawartosc)then local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); if(numer_rozdzialu)then return __FUNKCJA(zawartosc,numer_rozdzialu); end; end; end; return true; end); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*"; local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( wzor_rozdzialu_dodatniego, true, function(naglowek) return naglowek,naglowek; end, function(naglowek,_,__FUNKCJA) local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then return __FUNKCJA(naglowek,poziom_naglowka); end; return true; end); if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom) local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka; if((not czy_spis_tresci)and(spis_naglowka))then spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; end; return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom); elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom); elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; local zawartosc; if(not czy_numer_parametru_naglowka)then czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(not czy_numer_parametru_naglowka)then return nil;end; local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc_szablonu)then return nil;end; zawartosc_szablonu=mw.text.trim(zawartosc_szablonu); local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu); if((not naglowek)or(not poziom_naglowka))then return nil;end; zawartosc=naglowek; else zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc)then return nil;end; end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; local szablonowe_modul=require("Module:Szablonowe"); while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")); if(czy_pomiedzy_naglowkami and(((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) )--[[or( not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu()) )]]) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1; elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local czy_rozdzial_dwukropkowy; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_rozdzial)then liczba_start=liczba_start_rozdzial; else czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$"); liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; czy_spis=((czy_rozdzial_dwukropkowy)and(not tak))and true or nil; else liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; czy_spis=czy_rozdzial_dwukropkowy and true or nil; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_nieoddzielone,czy_wszystkie_linki) local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return true; else local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=czy_nieoddzielone or mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return true; end; end; else return false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return false; end; end; function p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,linia,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,false); if(czy_znalezione)then return liczba_linki_nierozdzialowe_szablonu,true;end; return liczba_spisowa,false; end; else return liczba_spisowa,false; end; end; end; function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz) local liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; return liczba_start,true; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; return liczba_start,true; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if((not liczba_start_naglowek_przed)or(liczba_start_sugerowane>liczba_start_naglowek_przed))then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if((not liczba_start_naglowek_przed)or(liczba_start_nowa>liczba_start_naglowek_przed))then liczba_start=liczba_start_nowa; end; else liczba_start=liczba_start_sugerowane; end; end; else liczba_start=liczba_start_sugerowane; end; return liczba_start,false; end; function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return liczba_koniec; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return liczba_koniec; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; return liczba_koniec; end; end; return liczba_koniec; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and( ( (lista_szablon~="")and( (przerwa_szablon=="") or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<"))) or(not mw.ustring.match(lista_szablon,"^:")) ) ) or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))) )); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_spis_tresci) or liczba_przed_rozdzialem); local czy_break; liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed,liczba_start_naglowek_przed,czy_znajdz); if(czy_break)then break;end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); local czy_break; liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,nil,czy_znajdz); if(czy_break)then break;end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,linia,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_znalezione=nil; if(liczba_start<=liczba_obiekt_start)then czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); end; if(czy_znalezione)then liczba_koniec=p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local czy_znalazles_linki=p.SzukajObiektuArtykularnegoWeElemencieTekstowym(rozdzial,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true,true,true); if(czy_znalazles_linki)then liczba_koniec=liczba_rozdzial_koniec;end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); --mw.log(tekst,"TYTAN123") return tekst; end; return p; 019sz76scao2i5vxv3k8m2fv8fckmco 557788 557786 2026-09-27T15:07:13Z Persino 2851 557788 Scribunto text/plain local p={}; function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end; local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od); if((a)and(b)and(a>b))then return;end; if((not liczba_do)or(b<=liczba_do))then return a,b,c,d,e,f,g,h,i,j,k; end; return nil; else if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end; local liczba_start=liczba_do or 1; local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba_od)))then return a,b,c,d,e,f,g,h,i,j,k; elseif((b1)and(b1==liczba_od))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; end; a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9; local dlugosc_tekstu_wyszukiwanego=#tekst; if(not czy_od_tylu)then if((not liczba_od)or(liczba_od==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; end; end; end; else if(liczba_od==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then tak=true; break; elseif(czy_okladka)then tak=true; break; end; end; end; return (not tak); end; function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,bez_innych_stron) local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((czy_element_spisu)and((czy_wszystkie_linki)or(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((bez_innych_stron)and(numer_rodzaju_artykulu>1)))))then return true; end; end; start=koniec_szablon; else return false; end; end; end; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true); if(czy_zerowy_spis_rzeczy)then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2) local liczba_start;local liczba_koniec; local liczba_wys=liczba_od; local spis_naglowka; local spis_naglowka_stare; local spis_naglowka_poziom; while(true)do local __liczba_start,__liczba_koniec,wartosc_przechwycona; if(czy_rozdzial_rownaniowy_dodatni)then __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu) else __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu); end; if(__liczba_start)then if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end; local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona); local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka) if(czy_spis_tresci)then spis_naglowka_stare=naglowek; spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; if(czy_spis_tresci(spis_naglowka))then liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; else spis_naglowka=naglowek; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; return true; end); if(not wynik)then break; end; else break; end; end; if(liczba_start)then return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom; end; end; local obiekt="SZABLON"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(naglowek,nil); end; end; else local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu]; if(naglowek)then local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if((naglowek)and(poziom_naglowka))then return __FUNKCJA(naglowek,poziom_naglowka); end; end; end; end; return true; end); return wynik; end); local obiekt="ZNACZNIK"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="center")then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(zawartosc,nil); end; end; elseif(znaczniki_wprowadzenia_tekstu[nazwa])then if(zawartosc)then local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); if(numer_rozdzialu)then return __FUNKCJA(zawartosc,numer_rozdzialu); end; end; end; return true; end); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*"; local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( wzor_rozdzialu_dodatniego, true, function(naglowek) return naglowek,naglowek; end, function(naglowek,_,__FUNKCJA) local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then return __FUNKCJA(naglowek,poziom_naglowka); end; return true; end); if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom) local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka; if((not czy_spis_tresci)and(spis_naglowka))then spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; end; return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom); elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom); elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; local zawartosc; if(not czy_numer_parametru_naglowka)then czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(not czy_numer_parametru_naglowka)then return nil;end; local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc_szablonu)then return nil;end; zawartosc_szablonu=mw.text.trim(zawartosc_szablonu); local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu); if((not naglowek)or(not poziom_naglowka))then return nil;end; zawartosc=naglowek; else zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc)then return nil;end; end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; local szablonowe_modul=require("Module:Szablonowe"); while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")); if(czy_pomiedzy_naglowkami and(((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) )--[[or( not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu()) )]]) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1; elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local czy_rozdzial_dwukropkowy; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_rozdzial)then liczba_start=liczba_start_rozdzial; else czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$"); liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; czy_spis=((czy_rozdzial_dwukropkowy)and(not tak))and true or nil; else liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; czy_spis=czy_rozdzial_dwukropkowy and true or nil; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_nieoddzielone,czy_wszystkie_linki) local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return true; else local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=czy_nieoddzielone or mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return true; end; end; else return false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return false; end; end; function p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,linia,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,false); if(czy_znalezione)then return liczba_linki_nierozdzialowe_szablonu,true;end; return liczba_spisowa,false; end; else return liczba_spisowa,false; end; end; end; function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz) local liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; return liczba_start,true; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; return liczba_start,true; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if((not liczba_start_naglowek_przed)or(liczba_start_sugerowane>liczba_start_naglowek_przed))then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if((not liczba_start_naglowek_przed)or(liczba_start_nowa>liczba_start_naglowek_przed))then liczba_start=liczba_start_nowa; end; else liczba_start=liczba_start_sugerowane; end; end; else liczba_start=liczba_start_sugerowane; end; return liczba_start,false; end; function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return liczba_koniec; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return liczba_koniec; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; return liczba_koniec; end; end; return liczba_koniec; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and( ( (lista_szablon~="")and( (przerwa_szablon=="") or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<"))) or(not mw.ustring.match(lista_szablon,"^:")) ) ) or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))) )); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_spis_tresci) or liczba_przed_rozdzialem); local czy_break; liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed,liczba_start_naglowek_przed,czy_znajdz); if(czy_break)then break;end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); local czy_break; liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,nil,czy_znajdz); if(czy_break)then break;end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,linia,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_znalezione=nil; if(liczba_start<=liczba_obiekt_start)then czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); end; if(czy_znalezione)then liczba_koniec=p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local czy_znalazles_linki=p.SzukajObiektuArtykularnegoWeElemencieTekstowym(rozdzial,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true,true,true); if(czy_znalazles_linki)then liczba_koniec=liczba_rozdzial_koniec;end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); --mw.log(tekst,"TYTAN123") return tekst; end; return p; 7lmhr1ycft8lembko6lchct1yd6k5ef 557789 557788 2026-09-27T15:13:26Z Persino 2851 557789 Scribunto text/plain local p={}; function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end; local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od); if((a)and(b)and(a>b))then return;end; if((not liczba_do)or(b<=liczba_do))then return a,b,c,d,e,f,g,h,i,j,k; end; return nil; else if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end; local liczba_start=liczba_do or 1; local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba_od)))then return a,b,c,d,e,f,g,h,i,j,k; elseif((b1)and(b1==liczba_od))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; end; a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9; local dlugosc_tekstu_wyszukiwanego=#tekst; if(not czy_od_tylu)then if((not liczba_od)or(liczba_od==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false); end; end; end; end; else if(liczba_od==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); if(not liczba_start_rozdzial)then if((not liczba_do)or(liczba_do==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true); end; if(not liczba_start_rozdzial)then if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then tak=true; break; elseif(czy_okladka)then tak=true; break; end; end; end; return (not tak); end; function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,bez_innych_stron) local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((czy_element_spisu)and((czy_wszystkie_linki)or(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((bez_innych_stron)and(numer_rodzaju_artykulu>1)))))then return true; end; end; start=koniec_szablon; else return false; end; end; end; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true); if(czy_zerowy_spis_rzeczy)then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2) local liczba_start;local liczba_koniec; local liczba_wys=liczba_od; local spis_naglowka; local spis_naglowka_stare; local spis_naglowka_poziom; while(true)do local __liczba_start,__liczba_koniec,wartosc_przechwycona; if(czy_rozdzial_rownaniowy_dodatni)then __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu) else __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu); end; if(__liczba_start)then if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end; local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona); local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka) if(czy_spis_tresci)then spis_naglowka_stare=naglowek; spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; if(czy_spis_tresci(spis_naglowka))then liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; else spis_naglowka=naglowek; if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end; liczba_start,liczba_koniec=__liczba_start,__liczba_koniec; return false; end; return true; end); if(not wynik)then break; end; else break; end; end; if(liczba_start)then return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom; end; end; local obiekt="SZABLON"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(naglowek,nil); end; end; else local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu]; if(naglowek)then local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if((naglowek)and(poziom_naglowka))then return __FUNKCJA(naglowek,poziom_naglowka); end; end; end; end; return true; end); return wynik; end); local obiekt="ZNACZNIK"; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt); local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( norma_kodowania_szablonu, false, function(kod) kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; return szablon,kod; end, function(szablon,kod,__FUNKCJA) local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="center")then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return __FUNKCJA(zawartosc,nil); end; end; elseif(znaczniki_wprowadzenia_tekstu[nazwa])then if(zawartosc)then local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); if(numer_rozdzialu)then return __FUNKCJA(zawartosc,numer_rozdzialu); end; end; end; return true; end); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*"; local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu( wzor_rozdzialu_dodatniego, true, function(naglowek) return naglowek,naglowek; end, function(naglowek,_,__FUNKCJA) local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then return __FUNKCJA(naglowek,poziom_naglowka); end; return true; end); if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom) local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka; if((not czy_spis_tresci)and(spis_naglowka))then spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",}; end; return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom); elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom); elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; local zawartosc; if(not czy_numer_parametru_naglowka)then czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(not czy_numer_parametru_naglowka)then return nil;end; local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc_szablonu)then return nil;end; zawartosc_szablonu=mw.text.trim(zawartosc_szablonu); local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu); if((not naglowek)or(not poziom_naglowka))then return nil;end; zawartosc=naglowek; else zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka]; if(not zawartosc)then return nil;end; end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; local szablonowe_modul=require("Module:Szablonowe"); while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")); if(czy_pomiedzy_naglowkami and(((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) )--[[or( not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu()) )]]) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1; elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local czy_rozdzial_dwukropkowy; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_rozdzial)then liczba_start=liczba_start_rozdzial; else czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$"); liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; end; czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; czy_spis=((czy_rozdzial_dwukropkowy)and(not tak))and true or nil; else liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst; czy_spis=czy_rozdzial_dwukropkowy and true or nil; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_nieoddzielone,czy_wszystkie_linki) local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return true; else local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=czy_nieoddzielone or mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return true; end; end; else return false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return false; end; end; function p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,linia,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,false); if(czy_znalezione)then return liczba_linki_nierozdzialowe_szablonu,true;end; return liczba_spisowa,false; end; else return liczba_spisowa,false; end; end; end; function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz) local liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; return liczba_start,true; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; return liczba_start,true; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if((not liczba_start_naglowek_przed)or(liczba_start_sugerowane>liczba_start_naglowek_przed))then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if((not liczba_start_naglowek_przed)or(liczba_start_nowa>liczba_start_naglowek_przed))then liczba_start=liczba_start_nowa; end; else liczba_start=liczba_start_sugerowane; end; end; else liczba_start=liczba_start_sugerowane; end; return liczba_start,false; end; function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return liczba_koniec; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return liczba_koniec; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; return liczba_koniec; end; end; return liczba_koniec; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and( ( (lista_szablon~="")and( (przerwa_szablon=="") or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<"))) or(not mw.ustring.match(lista_szablon,"^:")) ) ) or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))) )); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_spis_tresci) or liczba_przed_rozdzialem); local czy_break; liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed,liczba_start_naglowek_przed,czy_znajdz); if(czy_break)then break;end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); local czy_break; liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,nil,czy_znajdz); if(czy_break)then break;end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,linia,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_znalezione=nil; if(liczba_start<=liczba_obiekt_start)then czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); end; if(czy_znalezione)then liczba_koniec=p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local czy_znalazles_linki=p.SzukajObiektuArtykularnegoWeElemencieTekstowym(rozdzial,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true,true,true); if(czy_znalazles_linki)then liczba_koniec=liczba_rozdzial_koniec;end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); --mw.log(tekst,"TYTAN123") return tekst; end; return p; d9gvd4w0phvrowfb4fcc8z3qzy39y6p Szablon:NawigacjaSpecjalna/Ustawienia/Pomoc:Spis treści/config 10 61115 557792 501549 2026-09-27T18:21:05Z Persino 2851 557792 wikitext text/x-wiki <includeonly>{{Conf|{{{1}}}|nawigacja:styl=NawigacyjnaRamka}}</includeonly><noinclude>{{Dokumentacja|zawartość=Strona ustawień szablonu {{s|NawigacjaSpecjalna}} (przy użyciu {{s|Autonawigacja|Pomoc:Spis treści}}) dla strony spisu treści pomocy {{lp2|Spis treści}}.}}{{Kategoria|Szablony nawigacyjne ustawień do autonawigacji podręczników}}</noinclude> n8se0uj1t7ts6q5q6qke1o7chee00mt Moduł:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron 828 62247 557772 557646 2026-09-27T12:53:12Z Persino 2851 557772 Scribunto text/plain local p={}; function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self) return self.tabela_listy_danych_analizy_ksiazki; end; function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self) self.tabela_listy_danych_analizy_ksiazki={}; self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron={}; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); self.tabela_listy_danych_analizy_ksiazki.problemy=nil; self.tabela_listy_danych_analizy_ksiazki.licencja={}; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local function DaneNazw(pelna_nazwa_strony) local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_strony,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw); local nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw); return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; local strona_aktualna=ksiazkowe_modul["PełnaNazwaArtykułu"](); local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=DaneNazw(strona_aktualna); local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="")and(nazwa_przestrzeni..":") or "") ..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "") ..nazwa_ksiazki; local pelna_nazwa_ksiazki_ustawienia="Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki; local techniczne_modul=require("Module:Techniczne"); local ile,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki_ustawienia.."/config",tekst=true,}; if(ile>0)then local frame=mw.getCurrentFrame(); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_szablonu=szablonowe_modul.NazwaSzablonu(pelna_nazwa_ksiazki_ustawienia); local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}}; local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}}; if(not mw.ustring.match(ksiazka,"^%s*$"))then local strona=ksiazka..((artykul~="") and ("/"..artykul) or ""); local pudelko_modul=require("Module:Pudełko"); local czy_strona_niepoprawna=pudelko_modul["CzyNiepoprawnaNazwa"](strona); if(not czy_strona_niepoprawna)then local html_modul=require("Module:Html"); strona=html_modul.DecodeHtml(strona,true); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=strona_aktualna,}; local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,tekst=true,}; if(ile>0)then strona=ksiazkowe_modul["PełnaNazwaArtykułu"](strona); if(strona~=strona_aktualna)then local aktualna_nazwa_przestrzeni,aktualna_nazwa_przestrzeni_ksiazki,aktualna_nazwa_ksiazki,aktualna_nazwa_artykulu=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=DaneNazw(strona); --local aktualna_nazwa_przestrzeni,aktualna_nazwa_przestrzeni_ksiazki,aktualna_nazwa_ksiazki,aktualna_nazwa_artykulu=DaneNazw(strona_aktualna); self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni=aktualna_nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki=aktualna_nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki=aktualna_nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu=aktualna_nazwa_artykulu; if((aktualna_nazwa_przestrzeni~=nazwa_przestrzeni) or(aktualna_nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki) or(aktualna_nazwa_ksiazki~=nazwa_ksiazki) or(aktualna_nazwa_artykulu~=nazwa_artykulu) )then local zastepcza=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="zastępcza",}}; local parametry_modul=require("Module:Parametry"); self.tabela_listy_danych_analizy_ksiazki.alternatywna=parametry_modul.CzyTak(zastepcza); if(not self.tabela_listy_danych_analizy_ksiazki.alternatywna)then self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca=true; end; end; end; end; end; end; end; local tablica_zmiennych={}; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={}; tablica_zmiennych.linkobiekt={}; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, true,tablica_zmiennych); local parametry_modul=require("Module:Parametry"); if(parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki))then local stronicowyparser_numeracjaobiektowstron_modul=require("Module:StronicowyParser/NumeracjaObiektówStron"); stronicowyparser_numeracjaobiektowstron_modul.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; return self.tabela_listy_danych_analizy_ksiazki; end; function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow) ---- local czy_kodowanie=((nazwa_modulu_aktualna_czy_biezaca)or(tablica_analizy_obiektow_strony_dany_modul)); ---- if(not nazwa_modulu_aktualna_czy_biezaca)then if czy_artykul_korzystany then local nazwa_przestrzeni_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local nazwy_modul=require("Module:Nazwy"); nazwa_modulu_aktualna_czy_biezaca=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_aktualna_czy_biezaca,nazwa_przestrzeni_ksiazki_aktualna_czy_biezaca,nazwa_ksiazki_aktualna_czy_biezaca,nazwa_artykulu_aktualna_czy_biezaca); else nazwa_modulu_aktualna_czy_biezaca=nazwa_strony; end; end; local html_modul=require("Module:Html"); nazwa_strony=html_modul.EncodeId(nazwa_strony); ----- local tablica_spisu_tresci=nil; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_zbieraniedanychstron_potrzebne_modul=require("Module:StronicowyParser/ZbieranieDanychStron/Potrzebne"); local szablonowe_modul=require("Module:Szablonowe"); local liczby_modul=require("Module:Liczby"); local nazwa_modulu_aktualna_czy_biezaca_szablonowa=nazwa_modulu_aktualna_czy_biezaca_szablonowa or szablonowe_modul["SzablonowaKompletnaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca); local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local tablica_powtarzajacych_sie_elementow={}; local elementy_linku=nil; local frame=mw.getCurrentFrame(); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu; ---- local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; ---- local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; local tab_szablony_szablony_stron_zbiorczych=stronicowyparser_obiekty_modul.szablony_stron_zbiorczych; local tab_szablony_inne_szablony_stron_zbiorczych=stronicowyparser_obiekty_modul.inne_szablony_stron_zbiorczych; local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; ---- local tab_szablony_indeksowania=stronicowyparser_obiekty_modul.szablony_indeksowania; --- local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); ---- if(czy_kodowanie)then local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2) if(czy_szablon)then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(numer_parametru)then local parametr=tabela_parametrow_szablonu[numer_parametru]; if(parametr)then local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(parametr); if(naglowek)then return funkcja1(parametr); end; end; else local tabela_nazw={}; local function ParametrNR(numer) return stronicowyparser_potrzebne_modul.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw); end; local parametr=ParametrNR(1); if(parametr)then if(czy_liczyc)then local ile_poziom=tonumber(ParametrNR(5)) or 6; ile_poziom=(ile_poziom>0)and ile_poziom or 1; ile_poziom=(ile_poziom<=6) and ile_poziom or 6; local poziom=mw.ustring.rep("=",ile_poziom); local adres_ksiazki=ParametrNR(2); local nazwa_modulu_aktualna_czy_biezaca_strony=adres_ksiazki and ParametrNR(2) or nazwa_modulu_aktualna_czy_biezaca; local adres=nazwa_modulu_aktualna_czy_biezaca_strony..((parametr~="")and ("/"..parametr)or ""); adres=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(adres,nazwa_modulu_aktualna_czy_biezaca,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres; adres=html_modul.DecodeHtml(adres,true); parametr=ParametrNR(3) or parametr; local dodatek=ParametrNR(4); parametr=parametr..((dodatek) and (" "..dodatek) or ""); local ile,_=techniczne_modul.PoliczZbiory{[1]=adres,tekst=true,}; local ObiektKodNumer=function(szablon,obiekt) local tablica_analizy_obiektow_strony_dany_modul_numer=tablica_analizy_obiektow_strony_dany_modul[obiekt]; local kod_numer=1; for name,_ in pairs(tablica_analizy_obiektow_strony_dany_modul_numer)do kod_numer=math.max(kod_numer,name); end; kod_numer=kod_numer+1; tablica_analizy_obiektow_strony_dany_modul_numer[kod_numer]=szablon; local kod_szablonowe=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod_numer); return kod_szablonowe; end; if(ile>0)then local parametr=poziom..parametr..poziom; return funkcja1(parametr); else local szablon="<span style=\"color:red;\">"..parametr.."</span>"; local kod_parametr=ObiektKodNumer(szablon,"ZNACZNIK"); local parametr=poziom..kod_parametr..poziom; return funkcja1(parametr); end; else return funkcja1(parametr); end; end; end; end); elseif(czy_znacznik)then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((zawartosc)and(nazwa))then if(znaczniki_wprowadzenia_tekstu[nazwa])then return funkcja2(nazwa,zawartosc,atrybuty); end; end; end; end; tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(tekst_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,nil, function(szablon,obiekt,kod) local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");local czy_wikitabelka=(obiekt=="WIKITABELA"); if((czy_szablon)or(czy_znacznik)or(czy_wikitabelka))then local wynik=SpecjalneWprowadzeniaTekstu(szablon,obiekt,kod,czy_szablon,czy_znacznik,false,function()return true;end,function()return true;end); if(wynik)then return true,nil,nil,true;end; local rozdzial=mw.ustring.match(szablon,"\n(=[^\n]*[^%s=][^\n]*=)[^%S\n]*\n"); if(rozdzial)then local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial); if(naglowek)then return true,nil,nil,true; end; end; end; end, function(szablon,obiekt,kod) local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK"); local wynik=SpecjalneWprowadzeniaTekstu(szablon,obiekt,kod,czy_szablon,czy_znacznik,true, function(parametr) parametr=mw.ustring.gsub(parametr,"\n"," "); return "\n"..parametr.."\n "; end, function(nazwa,zawartosc,atrybuty) if((zawartosc)and(nazwa))then local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); zawartosc=mw.ustring.gsub(zawartosc,"\n"," "); local poziom_rowna=mw.ustring.rep("=",poziom); return "\n"..poziom_rowna..zawartosc..poziom_rowna.."\n "; end; end); if(wynik)then return wynik;end; return nil; end); end; local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_artykulu); local numeracja; ---- local KtorySzablonMaZwracacKategorieNaglowek=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[1] or nil; local KtorySzablonMaZwracacKategorieTekst=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[2] or nil; local CzyJestTakiProblemJakoElementTablicy=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[3] or nil; ---- local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania) --local nazwa_szablonu=szablonowe_modul["NazwaSzablonuWywołania"](szablon); local jest_naglowkuj_w_tekscie_rozdzialu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(jest_naglowkuj_w_tekscie_rozdzialu)then --local parametry_wywolania_szablonu_naglowek,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod); local numeracja_aktualna=parametry_wywolania_szablonu["uchwyt"] or parametry_wywolania_szablonu[1]; ---- if(numeracja_aktualna)then local wartosc_elementu=jest_naglowkuj_w_tekscie_rozdzialu[1]; local lista_dwuelementowa=tabela_elementow_strony_kodow and stronicowyparser_zbieraniedanychstron_potrzebne_modul.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,kod) or nil; if(not lista_dwuelementowa)then numeracja_aktualna=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(numeracja_aktualna,nazwa_modulu_aktualna_czy_biezaca,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or numeracja_aktualna; numeracja_aktualna=html_modul.DecodeHtml(numeracja_aktualna,true); lista_dwuelementowa={}; lista_dwuelementowa[1]=numeracja_aktualna; else numeracja_aktualna=lista_dwuelementowa[1]; end; if(numeracja_aktualna~="")then table.insert(numeracja,lista_dwuelementowa); end; ---- if(powtorka>=1)then if(self.tabela_listy_danych_analizy_ksiazki)then KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu_wywolania); end; end; elseif(powtorka>=1)then KtorySzablonMaZwracacKategorieNaglowek(nil,nazwa_szablonu_wywolania); end; powtorka=powtorka+1; end; return powtorka; end; ---- local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; ---- local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- local jest_naglowkuj_w_tekscie_rozdzialu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu]; if(jest_naglowkuj_w_tekscie_rozdzialu)then local numeracja=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; if((numeracja)and(numeracja~=""))then local wartosc_elementu=jest_naglowkuj_w_tekscie_rozdzialu[1]; local lista_dwuelementowa=tabela_elementow_strony_kodow and stronicowyparser_zbieraniedanychstron_potrzebne_modul.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,kod) or nil; if(not lista_dwuelementowa)then numeracja=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(numeracja,nazwa_modulu_aktualna_czy_biezaca,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; numeracja=html_modul.DecodeHtml(numeracja,true); else numeracja=lista_dwuelementowa[1]; end; end; KtorySzablonMaZwracacKategorieTekst(numeracja,nazwa_szablonu); return true; end; return false; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return false; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return false; end); end; return false; end; local RefPrzypisowy=function(obiekt,kod) return "&#91;"..((obiekt~="") and (obiekt.." ") or "")..kod.."&#93;"; end; local specjalne_modul=require("Module:Specjalne"); local nazwa_strony_z_naglowkami=((not tylko_naglowek)and(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "") or ""); for naglowek_tab,text_rozdzialu,poziom_rozdzialu in iterator do local naglowek=naglowek_tab[1]; numeracja={}; if(czy_kodowanie)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(text_rozdzialu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local wynik=SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod); if(wynik)then break;end; end; end; local powtorka=0; local czy_szablony=nil; local czy_indeksowanie=nil; local function SzablonyWywolywane(szablon,obiekt,kod) return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) powtorka=SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow); local czy_naglowek=tab_naglowki[nazwa_szablonu]; local czy_link;local nazwa_link; local function TempFunc(nazwa_szablonu) if(not czy_link)then czy_link=true; local str=mw.ustring.match(nazwa_szablonu,"^Link") nazwa_link=str and true or false; return nazwa_link; end; return nazwa_link; end; local czy_tak_naglowki=((czy_naglowek)and(TempFunc(nazwa_szablonu)and true or false) or ((not czy_naglowek)and nil)); if((czy_tak_naglowki~=nil)and(czy_tak_naglowki==false))then return ""; elseif((tab_szablony[nazwa_szablonu])or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])or(tab_szablony_inne_szablony_stron_zbiorczych[nazwa_szablonu])or((czy_tak_naglowki~=nil)and(czy_tak_naglowki==true)))then czy_szablony=true; local nazwa_link=TempFunc(nazwa_szablonu); if((not czy_artykul_korzystany)or(nazwa_link))then local nazwa_link=TempFunc(nazwa_szablonu); if(nazwa_link)then tabela_parametrow_szablonu[2]=tabela_parametrow_szablonu[2] or nazwa_artykulu; tabela_parametrow_szablonu[3]=tabela_parametrow_szablonu[3] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki); end; tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); if((self)and((self.tabela_listy_danych_analizy_ksiazki)))then local czy_link_lub_pobierz; if(czy_tak_naglowki==nil)then czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); else czy_link_lub_pobierz=czy_tak_naglowki or mw.ustring.match(nazwa_szablonu,"^Pobierz"); end; if(czy_link_lub_pobierz)then stronicowyparser_zbieraniedanychstron_potrzebne_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else stronicowyparser_zbieraniedanychstron_potrzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; end; local str=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); return str; elseif((tab_szablony_strona_start[nazwa_szablonu])or(tab_szablony_szablony_stron_zbiorczych[nazwa_szablonu]))then return ""; elseif(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])then local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; elseif((czy_indeksowanie)and(tab_szablony_indeksowania[nazwa_szablonu]))then return nil,true; end; return szablon; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return szablon; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return szablon; end); end; --naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywaneOgolny); --naglowek=mw.ustring.gsub(naglowek,"<ref>.-</ref>",""); --naglowek=Korekta(naglowek); ---naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end) local nazwa_rozdzialu_w_artykule; if(not czy_kodowanie)then nazwa_rozdzialu_w_artykule,naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,true,false); else local function SzablonyWywolywaneOgolny(naglowek) local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { tekst=naglowek, ["nagłówek"]=true, nieklasycznie=true, kodowanie=false, ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, ["nazwa modułu"]=nazwa_modulu_aktualna_czy_biezaca, }, function(szablon,obiekt,kod) local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end, function(szablon,obiekt,kod) return czy_indeksowanie; end); return naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne; end; czy_indeksowanie=true; local Znaczniki;local SzablonyStylowe;local ZnakiSpecjalne; naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=SzablonyWywolywaneOgolny(naglowek); nazwa_rozdzialu_w_artykule=naglowek; naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(tab_szablony_indeksowania[nazwa_szablonu])then return "";end; end); elseif(obiekt=="ZNACZNIK")then szablon=Znaczniki(szablon,"li"); szablon=Znaczniki(szablon,"ol"); szablon=Znaczniki(szablon,"ul"); return szablon; end; end); czy_indeksowanie=false; nazwa_rozdzialu_w_artykule=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_rozdzialu_w_artykule,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="ATRYBUTY")then return nil,true; elseif(obiekt=="SZABLON")then szablon=SzablonyWywolywaneOgolny(szablon); return szablon; end; --szablon=Korekta(szablon); --szablon=specjalne_modul["UsuńSzablonyStylów"](szablon); --szablon=specjalne_modul["UsuńZnakiSpecjalne"](szablon); return szablon; end); nazwa_rozdzialu_w_artykule=SzablonyStylowe(nazwa_rozdzialu_w_artykule); nazwa_rozdzialu_w_artykule=ZnakiSpecjalne(nazwa_rozdzialu_w_artykule); nazwa_rozdzialu_w_artykule=Znaczniki(nazwa_rozdzialu_w_artykule); if(not czy_szablony)then nazwa_rozdzialu_w_artykule=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu_w_artykule); nazwa_rozdzialu_w_artykule=html_modul.EncodeSpecjalneZnakiHtml(nazwa_rozdzialu_w_artykule); end; end; nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'\'",""); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'",""); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"^[%s_]*",""); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[%s_]*$",""); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[_%s]+"," "); naglowek=mw.ustring.gsub(naglowek,szablonowe_modul.NormaWzoruKodowaniaTekstu("REF(%a*)","(%d+)"),function(obiekt,kod) return "<sup>"..RefPrzypisowy(obiekt,kod).."</sup>"; end); naglowek=mw.ustring.gsub(naglowek,szablonowe_modul.NormaWzoruKodowaniaTekstu("POSTMATH"),function(kod) if(not wzory_zamiast_kodow)then return szablonowe_modul[((nazwa_strony)and(nazwa_strony=="")) and "NormaKoduKodowaniaTekstu" or "NormaKoduZakodowanegoWikiTekstu"]("postMath",(mw.ustring.rep("0",math.max(8-#kod,0)))..kod); elseif(not czy_artykul_korzystany)then if(tablica_obiektow_strony_danych_kodow_specjalnych_modul)then if(tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then local kod=tonumber(kod); local szablon=tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][kod]; if(szablon)then szablon=frame:preprocess(szablon); return szablon; end; end; end end; return szablonowe_modul[czy_artykul_korzystany and "NormaKoduKodowaniaTekstu" or "NormaKoduZakodowanegoWikiTekstu"]("postMath",(mw.ustring.rep("0",math.max(8-#kod,0)))..kod); end); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,szablonowe_modul.NormaWzoruKodowaniaTekstu("REF(%a*)"),function(obiekt,kod) return RefPrzypisowy(obiekt,kod); end); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,szablonowe_modul.NormaWzoruKodowaniaTekstu("POSTMATH"),function(kod) kod=liczby_modul.LiczbaSzesnastkowaKodyBazySzablonowe(kod); return szablonowe_modul.NormaKoduZakodowanegoHtmlTekstu("postMath",kod); end); --nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"|","&#"..tostring(mw.ustring.byte('|'))..";"); local numer_tego_samego_naglowka=1; --local nazwa_rozdzialu_w_artykule_p=mw.ustring.lower(nazwa_rozdzialu_w_artykule); local numer_tego_samego_naglowka=1; for s=1,#tablica_powtarzajacych_sie_elementow,1 do local element=tablica_powtarzajacych_sie_elementow[s]; if(element==nazwa_rozdzialu_w_artykule)then numer_tego_samego_naglowka=numer_tego_samego_naglowka+1; end; end; if(numer_tego_samego_naglowka==1)then elementy_linku={nazwa_rozdzialu_w_artykule,naglowek}; else elementy_linku={nazwa_rozdzialu_w_artykule.."_"..numer_tego_samego_naglowka,naglowek}; end; if((obiekty)and(numeracja))then for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; end; if((poziom_rozdzialu or 0)>0)then local numer_rozdzialu_ustalony=HNumer(poziom_rozdzialu); tablica_powtarzajacych_sie_elementow[#tablica_powtarzajacych_sie_elementow+1]=nazwa_rozdzialu_w_artykule; if(tablica_spisu_tresci==nil)then tablica_spisu_tresci={}; tablica_spisu_tresci.nazwa_strony=nazwa_strony_z_naglowkami; end; tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; end; end; if(czy_kodowanie)then if(czy_artykul_korzystany)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not CzyJestTakiProblemJakoElementTablicy())then local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+"); if((linia_poczatkowa)and((mw.ustring.match(linia_poczatkowa,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*\n*")) or(mw.ustring.match(linia_poczatkowa,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$*"))) )then return tablica_spisu_tresci; end; local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(tekst_artykulu,"^(.-)\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or tekst_artykulu; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zerowy,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local wynik=SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod); if(wynik)then break;end; end; end; end; end; return tablica_spisu_tresci; end; return p; nl3x323peffwthqk2kgcnlp2hps3iia 557797 557772 2026-09-28T04:44:35Z Persino 2851 557797 Scribunto text/plain local p={}; function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self) return self.tabela_listy_danych_analizy_ksiazki; end; function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self) self.tabela_listy_danych_analizy_ksiazki={}; self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron={}; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); self.tabela_listy_danych_analizy_ksiazki.problemy=nil; self.tabela_listy_danych_analizy_ksiazki.licencja={}; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local function DaneNazw(pelna_nazwa_strony) local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_strony,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw); local nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw); return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; local strona_aktualna=ksiazkowe_modul["PełnaNazwaArtykułu"](); local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=DaneNazw(strona_aktualna); local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="")and(nazwa_przestrzeni..":") or "") ..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "") ..nazwa_ksiazki; local pelna_nazwa_ksiazki_ustawienia="Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki; local techniczne_modul=require("Module:Techniczne"); local ile,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki_ustawienia.."/config",tekst=true,}; if(ile>0)then local frame=mw.getCurrentFrame(); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_szablonu=szablonowe_modul.NazwaSzablonu(pelna_nazwa_ksiazki_ustawienia); local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}}; local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}}; if(not mw.ustring.match(ksiazka,"^%s*$"))then local strona=ksiazka..((artykul~="") and ("/"..artykul) or ""); local pudelko_modul=require("Module:Pudełko"); local czy_strona_niepoprawna=pudelko_modul["CzyNiepoprawnaNazwa"](strona); if(not czy_strona_niepoprawna)then local html_modul=require("Module:Html"); strona=html_modul.DecodeHtml(strona,true); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=strona_aktualna,}; local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,tekst=true,}; if(ile>0)then strona=ksiazkowe_modul["PełnaNazwaArtykułu"](strona); if(strona~=strona_aktualna)then local aktualna_nazwa_przestrzeni,aktualna_nazwa_przestrzeni_ksiazki,aktualna_nazwa_ksiazki,aktualna_nazwa_artykulu=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=DaneNazw(strona); --local aktualna_nazwa_przestrzeni,aktualna_nazwa_przestrzeni_ksiazki,aktualna_nazwa_ksiazki,aktualna_nazwa_artykulu=DaneNazw(strona_aktualna); self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni=aktualna_nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki=aktualna_nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki=aktualna_nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu=aktualna_nazwa_artykulu; if((aktualna_nazwa_przestrzeni~=nazwa_przestrzeni) or(aktualna_nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki) or(aktualna_nazwa_ksiazki~=nazwa_ksiazki) or(aktualna_nazwa_artykulu~=nazwa_artykulu) )then local zastepcza=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="zastępcza",}}; local parametry_modul=require("Module:Parametry"); self.tabela_listy_danych_analizy_ksiazki.alternatywna=parametry_modul.CzyTak(zastepcza); if(not self.tabela_listy_danych_analizy_ksiazki.alternatywna)then self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca=true; end; end; end; end; end; end; end; local tablica_zmiennych={}; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={}; tablica_zmiennych.linkobiekt={}; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, true,tablica_zmiennych); local parametry_modul=require("Module:Parametry"); if(parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki))then local stronicowyparser_numeracjaobiektowstron_modul=require("Module:StronicowyParser/NumeracjaObiektówStron"); stronicowyparser_numeracjaobiektowstron_modul.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; return self.tabela_listy_danych_analizy_ksiazki; end; function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow) ---- local czy_kodowanie=((nazwa_modulu_aktualna_czy_biezaca)or(tablica_analizy_obiektow_strony_dany_modul)); ---- if(not nazwa_modulu_aktualna_czy_biezaca)then if czy_artykul_korzystany then local nazwa_przestrzeni_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local nazwy_modul=require("Module:Nazwy"); nazwa_modulu_aktualna_czy_biezaca=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_aktualna_czy_biezaca,nazwa_przestrzeni_ksiazki_aktualna_czy_biezaca,nazwa_ksiazki_aktualna_czy_biezaca,nazwa_artykulu_aktualna_czy_biezaca); else nazwa_modulu_aktualna_czy_biezaca=nazwa_strony; end; end; local html_modul=require("Module:Html"); nazwa_strony=html_modul.EncodeId(nazwa_strony); ----- local tablica_spisu_tresci=nil; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_zbieraniedanychstron_potrzebne_modul=require("Module:StronicowyParser/ZbieranieDanychStron/Potrzebne"); local szablonowe_modul=require("Module:Szablonowe"); local liczby_modul=require("Module:Liczby"); local nazwa_modulu_aktualna_czy_biezaca_szablonowa=nazwa_modulu_aktualna_czy_biezaca_szablonowa or szablonowe_modul["SzablonowaKompletnaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca); local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local tablica_powtarzajacych_sie_elementow={}; local elementy_linku=nil; local frame=mw.getCurrentFrame(); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu; ---- local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; ---- local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; local tab_szablony_szablony_stron_zbiorczych=stronicowyparser_obiekty_modul.szablony_stron_zbiorczych; local tab_szablony_inne_szablony_stron_zbiorczych=stronicowyparser_obiekty_modul.inne_szablony_stron_zbiorczych; local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; ---- local tab_szablony_indeksowania=stronicowyparser_obiekty_modul.szablony_indeksowania; --- local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); ---- if(czy_kodowanie)then local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2) if(czy_szablon)then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(numer_parametru)then local parametr=tabela_parametrow_szablonu[numer_parametru]; if(parametr)then local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(parametr); if(naglowek)then return funkcja1(parametr); end; end; else local tabela_nazw={}; local function ParametrNR(numer) return stronicowyparser_potrzebne_modul.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw); end; local parametr=ParametrNR(1); if(parametr)then if(czy_liczyc)then local ile_poziom=tonumber(ParametrNR(5)) or 6; ile_poziom=(ile_poziom>0)and ile_poziom or 1; ile_poziom=(ile_poziom<=6) and ile_poziom or 6; local poziom=mw.ustring.rep("=",ile_poziom); local adres_ksiazki=ParametrNR(2); local nazwa_modulu_aktualna_czy_biezaca_strony=adres_ksiazki and ParametrNR(2) or nazwa_modulu_aktualna_czy_biezaca; local adres=nazwa_modulu_aktualna_czy_biezaca_strony..((parametr~="")and ("/"..parametr)or ""); adres=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(adres,nazwa_modulu_aktualna_czy_biezaca,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres; adres=html_modul.DecodeHtml(adres,true); parametr=ParametrNR(3) or parametr; local dodatek=ParametrNR(4); parametr=parametr..((dodatek) and (" "..dodatek) or ""); local ile,_=techniczne_modul.PoliczZbiory{[1]=adres,tekst=true,}; local ObiektKodNumer=function(szablon,obiekt) local tablica_analizy_obiektow_strony_dany_modul_numer=tablica_analizy_obiektow_strony_dany_modul[obiekt]; local kod_numer=1; for name,_ in pairs(tablica_analizy_obiektow_strony_dany_modul_numer)do kod_numer=math.max(kod_numer,name); end; kod_numer=kod_numer+1; tablica_analizy_obiektow_strony_dany_modul_numer[kod_numer]=szablon; local kod_szablonowe=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod_numer); return kod_szablonowe; end; if(ile>0)then local parametr=poziom..parametr..poziom; return funkcja1(parametr); else local szablon="<span style=\"color:red;\">"..parametr.."</span>"; local kod_parametr=ObiektKodNumer(szablon,"ZNACZNIK"); local parametr=poziom..kod_parametr..poziom; return funkcja1(parametr); end; else return funkcja1(parametr); end; end; end; end); elseif(czy_znacznik)then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((zawartosc)and(nazwa))then if(znaczniki_wprowadzenia_tekstu[nazwa])then return funkcja2(nazwa,zawartosc,atrybuty); end; end; end; end; tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(tekst_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,nil, function(szablon,obiekt,kod) local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");local czy_wikitabelka=(obiekt=="WIKITABELA"); if((czy_szablon)or(czy_znacznik)or(czy_wikitabelka))then local wynik=SpecjalneWprowadzeniaTekstu(szablon,obiekt,kod,czy_szablon,czy_znacznik,false,function()return true;end,function()return true;end); if(wynik)then return true,nil,nil,true;end; local rozdzial=mw.ustring.match(szablon,"\n(=[^\n]*[^%s=][^\n]*=)[^%S\n]*\n"); if(rozdzial)then local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial); if(naglowek)then return true,nil,nil,true; end; end; end; end, function(szablon,obiekt,kod) local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK"); local wynik=SpecjalneWprowadzeniaTekstu(szablon,obiekt,kod,czy_szablon,czy_znacznik,true, function(parametr) parametr=mw.ustring.gsub(parametr,"\n"," "); return "\n"..parametr.."\n "; end, function(nazwa,zawartosc,atrybuty) if((zawartosc)and(nazwa))then local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); zawartosc=mw.ustring.gsub(zawartosc,"\n"," "); local poziom_rowna=mw.ustring.rep("=",poziom); return "\n"..poziom_rowna..zawartosc..poziom_rowna.."\n "; end; end); if(wynik)then return wynik;end; return nil; end); end; local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_artykulu); local numeracja; ---- local KtorySzablonMaZwracacKategorieNaglowek=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[1] or nil; local KtorySzablonMaZwracacKategorieTekst=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[2] or nil; local CzyJestTakiProblemJakoElementTablicy=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[3] or nil; ---- local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania) --local nazwa_szablonu=szablonowe_modul["NazwaSzablonuWywołania"](szablon); local jest_naglowkuj_w_tekscie_rozdzialu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(jest_naglowkuj_w_tekscie_rozdzialu)then --local parametry_wywolania_szablonu_naglowek,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod); local numeracja_aktualna=parametry_wywolania_szablonu["uchwyt"] or parametry_wywolania_szablonu[1]; ---- if(numeracja_aktualna)then local wartosc_elementu=jest_naglowkuj_w_tekscie_rozdzialu[1]; local lista_dwuelementowa=tabela_elementow_strony_kodow and stronicowyparser_zbieraniedanychstron_potrzebne_modul.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,kod) or nil; if(not lista_dwuelementowa)then numeracja_aktualna=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(numeracja_aktualna,nazwa_modulu_aktualna_czy_biezaca,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or numeracja_aktualna; numeracja_aktualna=html_modul.DecodeHtml(numeracja_aktualna,true); lista_dwuelementowa={}; lista_dwuelementowa[1]=numeracja_aktualna; else numeracja_aktualna=lista_dwuelementowa[1]; end; if(numeracja_aktualna~="")then table.insert(numeracja,lista_dwuelementowa); end; ---- if(powtorka>=1)then if(self.tabela_listy_danych_analizy_ksiazki)then KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu_wywolania); end; end; elseif(powtorka>=1)then KtorySzablonMaZwracacKategorieNaglowek(nil,nazwa_szablonu_wywolania); end; powtorka=powtorka+1; end; return powtorka; end; ---- local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; ---- local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- local jest_naglowkuj_w_tekscie_rozdzialu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu]; if(jest_naglowkuj_w_tekscie_rozdzialu)then local numeracja=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; if((numeracja)and(numeracja~=""))then local wartosc_elementu=jest_naglowkuj_w_tekscie_rozdzialu[1]; local lista_dwuelementowa=tabela_elementow_strony_kodow and stronicowyparser_zbieraniedanychstron_potrzebne_modul.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,kod) or nil; if(not lista_dwuelementowa)then numeracja=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(numeracja,nazwa_modulu_aktualna_czy_biezaca,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; numeracja=html_modul.DecodeHtml(numeracja,true); else numeracja=lista_dwuelementowa[1]; end; end; KtorySzablonMaZwracacKategorieTekst(numeracja,nazwa_szablonu); return true; end; return false; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return false; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return false; end); end; return false; end; local RefPrzypisowy=function(obiekt,kod) return "&#91;"..((obiekt~="") and (obiekt.." ") or "")..kod.."&#93;"; end; local specjalne_modul=require("Module:Specjalne"); local nazwa_strony_z_naglowkami=((not tylko_naglowek)and(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "") or ""); for naglowek_tab,text_rozdzialu,poziom_rozdzialu in iterator do local naglowek=naglowek_tab[1]; numeracja={}; if(czy_kodowanie)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(text_rozdzialu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local wynik=SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod); if(wynik)then break;end; end; end; local powtorka=0; local czy_szablony=nil; local czy_indeksowanie=nil; local function SzablonyWywolywane(szablon,obiekt,kod) return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) powtorka=SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow); local czy_naglowek=tab_naglowki[nazwa_szablonu]; local czy_link;local nazwa_link; local function TempFunc(nazwa_szablonu) if(not czy_link)then czy_link=true; local str=mw.ustring.match(nazwa_szablonu,"^Link") nazwa_link=str and true or false; return nazwa_link; end; return nazwa_link; end; local czy_tak_naglowki=((czy_naglowek)and(TempFunc(nazwa_szablonu)and true or false) or ((not czy_naglowek)and nil)); if((czy_tak_naglowki~=nil)and(czy_tak_naglowki==false))then return ""; elseif((tab_szablony[nazwa_szablonu])or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])or(tab_szablony_inne_szablony_stron_zbiorczych[nazwa_szablonu])or((czy_tak_naglowki~=nil)and(czy_tak_naglowki==true)))then czy_szablony=true; local nazwa_link=TempFunc(nazwa_szablonu); if((not czy_artykul_korzystany)or(nazwa_link))then local nazwa_link=TempFunc(nazwa_szablonu); if(nazwa_link)then tabela_parametrow_szablonu[2]=tabela_parametrow_szablonu[2] or nazwa_artykulu; tabela_parametrow_szablonu[3]=tabela_parametrow_szablonu[3] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki); end; tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); if((self)and((self.tabela_listy_danych_analizy_ksiazki)))then local czy_link_lub_pobierz; if(czy_tak_naglowki==nil)then czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); else czy_link_lub_pobierz=czy_tak_naglowki or mw.ustring.match(nazwa_szablonu,"^Pobierz"); end; if(czy_link_lub_pobierz)then stronicowyparser_zbieraniedanychstron_potrzebne_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else stronicowyparser_zbieraniedanychstron_potrzebne_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; end; local str=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); return str; elseif((tab_szablony_strona_start[nazwa_szablonu])or(tab_szablony_szablony_stron_zbiorczych[nazwa_szablonu]))then return ""; elseif(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])then local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; elseif((czy_indeksowanie)and(tab_szablony_indeksowania[nazwa_szablonu]))then return nil,true; end; return szablon; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return szablon; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return szablon; end); end; --naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywaneOgolny); --naglowek=mw.ustring.gsub(naglowek,"<ref>.-</ref>",""); --naglowek=Korekta(naglowek); ---naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end) local nazwa_rozdzialu_w_artykule; if(not czy_kodowanie)then nazwa_rozdzialu_w_artykule,naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,true,false); else local function SzablonyWywolywaneOgolny(naglowek) local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { tekst=naglowek, ["nagłówek"]=true, nieklasycznie=true, kodowanie=false, ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, ["nazwa modułu"]=nazwa_modulu_aktualna_czy_biezaca, }, function(szablon,obiekt,kod) local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end, function(szablon,obiekt,kod) return czy_indeksowanie; end); return naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne; end; czy_indeksowanie=true; local Znaczniki;local SzablonyStylowe;local ZnakiSpecjalne; naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=SzablonyWywolywaneOgolny(naglowek); nazwa_rozdzialu_w_artykule=naglowek; naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(tab_szablony_indeksowania[nazwa_szablonu])then return "";end; end); elseif(obiekt=="ZNACZNIK")then szablon=Znaczniki(szablon,"li"); szablon=Znaczniki(szablon,"ol"); szablon=Znaczniki(szablon,"ul"); return szablon; end; end); czy_indeksowanie=false; nazwa_rozdzialu_w_artykule=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_rozdzialu_w_artykule,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="ATRYBUTY")then return nil,true; elseif(obiekt=="SZABLON")then szablon=SzablonyWywolywaneOgolny(szablon); return szablon; end; --szablon=Korekta(szablon); --szablon=specjalne_modul["UsuńSzablonyStylów"](szablon); --szablon=specjalne_modul["UsuńZnakiSpecjalne"](szablon); return szablon; end); nazwa_rozdzialu_w_artykule=SzablonyStylowe(nazwa_rozdzialu_w_artykule); nazwa_rozdzialu_w_artykule=ZnakiSpecjalne(nazwa_rozdzialu_w_artykule); nazwa_rozdzialu_w_artykule=Znaczniki(nazwa_rozdzialu_w_artykule); if(not czy_szablony)then nazwa_rozdzialu_w_artykule=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu_w_artykule); nazwa_rozdzialu_w_artykule=html_modul.EncodeSpecjalneZnakiHtml(nazwa_rozdzialu_w_artykule); end; end; nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'\'",""); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'",""); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"^[%s_]*",""); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[%s_]*$",""); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[_%s]+"," "); naglowek=mw.ustring.gsub(naglowek,szablonowe_modul.NormaWzoruKodowaniaTekstu("REF(%a*)","(%d+)"),function(obiekt,kod) return "<sup>"..RefPrzypisowy(obiekt,kod).."</sup>"; end); naglowek=mw.ustring.gsub(naglowek,szablonowe_modul.NormaWzoruKodowaniaTekstu("POSTMATH"),function(kod) if(not wzory_zamiast_kodow)then return szablonowe_modul[((nazwa_strony)and(nazwa_strony=="")) and "NormaKoduKodowaniaTekstu" or "NormaKoduZakodowanegoWikiTekstu"]("postMath",(mw.ustring.rep("0",math.max(8-#kod,0)))..kod); elseif(not czy_artykul_korzystany)then if(tablica_obiektow_strony_danych_kodow_specjalnych_modul)then if(tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then local kod=tonumber(kod); local szablon=tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][kod]; if(szablon)then szablon=frame:preprocess(szablon); return szablon; end; end; end end; return szablonowe_modul[czy_artykul_korzystany and "NormaKoduKodowaniaTekstu" or "NormaKoduZakodowanegoWikiTekstu"]("postMath",(mw.ustring.rep("0",math.max(8-#kod,0)))..kod); end); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,szablonowe_modul.NormaWzoruKodowaniaTekstu("REF(%a*)"),function(obiekt,kod) return RefPrzypisowy(obiekt,kod); end); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,szablonowe_modul.NormaWzoruKodowaniaTekstu("POSTMATH"),function(kod) kod=liczby_modul.LiczbaSzesnastkowaKodyBazySzablonowe(kod); return szablonowe_modul.NormaKoduZakodowanegoHtmlTekstu("postMath",kod); end); --nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"|","&#"..tostring(mw.ustring.byte('|'))..";"); local numer_tego_samego_naglowka=1; --local nazwa_rozdzialu_w_artykule_p=mw.ustring.lower(nazwa_rozdzialu_w_artykule); local numer_tego_samego_naglowka=1; for s=1,#tablica_powtarzajacych_sie_elementow,1 do local element=tablica_powtarzajacych_sie_elementow[s]; if(element==nazwa_rozdzialu_w_artykule)then numer_tego_samego_naglowka=numer_tego_samego_naglowka+1; end; end; if(numer_tego_samego_naglowka==1)then elementy_linku={nazwa_rozdzialu_w_artykule,naglowek}; else elementy_linku={nazwa_rozdzialu_w_artykule.."_"..numer_tego_samego_naglowka,naglowek}; end; if((obiekty)and(numeracja))then for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; end; if((poziom_rozdzialu or 0)>0)then local numer_rozdzialu_ustalony=HNumer(poziom_rozdzialu); tablica_powtarzajacych_sie_elementow[#tablica_powtarzajacych_sie_elementow+1]=nazwa_rozdzialu_w_artykule; if(tablica_spisu_tresci==nil)then tablica_spisu_tresci={}; tablica_spisu_tresci.nazwa_strony=nazwa_strony_z_naglowkami; end; tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; end; end; if(czy_kodowanie)then if(czy_artykul_korzystany)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not CzyJestTakiProblemJakoElementTablicy())then local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+"); if((linia_poczatkowa)and((mw.ustring.match(linia_poczatkowa,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*\n*")) or(mw.ustring.match(linia_poczatkowa,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$*"))) )then return tablica_spisu_tresci; end; local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(tekst_artykulu,"^(.-)\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or tekst_artykulu; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zerowy,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local wynik=SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod); if(wynik)then break;end; end; end; end; end; return tablica_spisu_tresci; end; return p; einijtio2vbc9noan1wzh6g6p9gqgv5 Wikibooks:Moduły/Html 4 63462 557793 557746 2026-09-28T03:44:03Z Persino 2851 /* {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} */ 557793 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Moduł wywołuje się za pomocą polecenia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); </syntaxhighlight> Dzięki temu poleceniu można wypisywać funkcje należącego do niego. Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu. == Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru == === {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} === Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku: <syntaxhighlight lang="lua"> function(kod) return "&"..kod..";"; end </syntaxhighlight> Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany. Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych. | 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi. | 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany. | 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}. == Funkcje transformujące == === {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} === Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}. === {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} === Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}. === {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} === Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{NS|k=mw|w=tak|l=tak|pk=d}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}. Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnakiSpecjalneTaguNowiki(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}. === {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} === Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnakiSpecjalneWikiLinku(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}. === {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} === Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu, | 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''', | 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}. === {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} === Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZnakProloguList(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|EncodeZnakProloguList|tekst= * Oto jest pierwszy element listy, *: Oto jest drugi element listy. }} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}. === {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} === Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu. | 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''. | 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit&section=2}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}. === {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} === Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), ale wywołana jak nazwana, aby nie była traktowana jako nazwana ze względu na występowanie w nim znaku równości {{Code|{{=}}}}, potem jest w pełni nienazwana po tej transformacji. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzypisanieZnakoweEncodeHtml(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}. === {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} === Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaDwukropkaNaKodHtml(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}. == Inne funkcje kodujące == === {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} === Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu do transformacji jest potrzebna funkcja: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeId(id,bez_transformacji)...end; </syntaxhighlight> Parametry nieramkowe normalne funkcji: {{OpisParametrów | 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia. | 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}. == Funkcje kodów == === {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodHTMLZnaku(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''. | 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}. ==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ==== Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}. === {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p["KodyHTMLZnakówWikiCiągu"](frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8. | 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}. ==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ==== Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}. == Funkcje usuwania z tekstu zbędnych znaków == === {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} === Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}. == Funkcje specjalistyczne kodujące i do nich odwrotne == === {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} === Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|&#8206;}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeWiki(parametr,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować, | 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}. === {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} === Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|&#8206;}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeWiki(parametr,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować, | 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}. === {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} === Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IsEncodedHtml(parametr,encode,encode_real)..end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany. | 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}. | 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}. === {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} === Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI"). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania. | 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}}, | 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}. === {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} === Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Parametr do odkodowania. | 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}. | 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}}, | 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}. == Kody specjalne typowo tekstowe funkcji prostych i odwrotnych == === {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} === Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}. === {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} === Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} na {{Code|<nowiki>\"</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}. == Funkcje wydzielania części z adresów == === {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} === Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu. | 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników. | 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}. }} Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres. | 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}. === {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} === Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu. | 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony. | 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres. | 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}. === {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} === Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu. | 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony. | 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres. | 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}. === {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} === Funkcja wydziela nazwę strony z parametrów adresu strony. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. <syntaxhighlight lang="lua"> p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu. | 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres. | 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}. === {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} === Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu. | 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej. | 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres. | 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}. == Funkcje stron == === {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} === Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.URLStrona(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony. | 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}. === {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} === Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu, a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposobu, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["UrlBezProtokołu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}. == Funkcje kodujące i dekodujące == === {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} === Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeKoduHTMLZnaku(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}. === {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} === Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaEncodeTekst(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}. === {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} === Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy. | 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją. | 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}. === {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} === Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|&#35}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, kolejno przed i po wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}. === {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} === Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony. | 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry. | 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}. == Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z == === {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} === Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdych na kod: {{Code|{{Nowiki|&amp;num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku. Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|&#35;}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane przy analizie nagłówkowej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeHashKoduHtmlTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}. === {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} === Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna z parametrów jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} z kodu {{Code|{{Nowiki|&num;num}}}}, używając tej funkcji. Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', zostały wywołane w celu odkodowania różnych części zakodowanych wcześniej, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Funkcją odwrotną do tego w nagłówku ma nazwę: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia, | 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;num}}}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}. == Fukcja operująca na znakach '''#''' w kodach '''HTML''' == === {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} === Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|&num;}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeTempHashKoduHtmlTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}. === {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} === Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|&num;}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end; </syntaxhighlight> Parametry zwykłe funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części. | 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej. | 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}. == Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne == === {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} === Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|&num;}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części. }} Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}). ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}. === {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} === Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&amp;&num;}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka, | 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}}, | 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie, }} Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}). ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}. == Specjalistyczne ogólne funkcje adresów == === Funkcja kombajn adresów === ==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==== Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami (jeśli mechanizm {{NS|k=mw|m=tak|l=tak|pk=m}}, to uwzględnia) i nagłówkiem strony. Adres dzielimy je na trzy części funkcją: {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją: {{LinkŚródtytuł|p.TworzenieAdresuHtml}}. Przy analizie adresów, właściwych, parametrów i nagłówków, funkcja z trzech funkcji strony, parametrów i nagłówka, w której w drugim parametrze jest procedura, należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów, jako ich drugi parametr. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia. | 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka. | 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony. | 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu. }} ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}. === Funkcje pośrednie oparte na kombajnie === ==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==== Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu. Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}. Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}. Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: *{{OpisParametrów | 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem. | 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. | 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry. | 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka. | 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek. }} ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}. ==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==== Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu. Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie przy analizie tych trzech uzyskanych zmiennych parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja: {{LzLua|mw.uri.decode}}, a po nim: {{LzLua|mw.uri.encode}}. Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}. Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem. | 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. | 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry. | 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka. | 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek. }} ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}. ==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==== Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu. Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}. Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}. Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem. | 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry. | 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka. | 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek. }} ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}. ==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==== Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu. Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest: {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy: {{LzLua|mw.uri.encode}}. Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}. Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem. | 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. | 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry. | 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka. | 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek. }} ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}. === Specjalistyczne szczególne funkcje adresów === ==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==== Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}. Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}. Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}. Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|adres}} | _1 = Adres do zakodowania. | 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół. }} ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}. ==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==== Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}. Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}. Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu. | 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. | 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|html}} | _1 = Adres do kodowania. | 2 = {{Code|encode}} | _2 = Czy kodować. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}. == Wykorzystanie szczególnych funkcji adresów == === {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} === Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}. Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UriEncode(frame)...end; </syntaxhighlight> Parametry tablicy ramki tablicy transportu: {{OpisParametrów | 1 = {{Code|html}} | _1 = Adres z protokołem strony. }} Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5dwq3vi018s46x4tdy94vp50794gxa4 557794 557793 2026-09-28T03:44:48Z Persino 2851 557794 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Moduł wywołuje się za pomocą polecenia: <syntaxhighlight lang="lua"> local html_modul=require("Module:Html"); </syntaxhighlight> Dzięki temu poleceniu można wypisywać funkcje należącego do niego. Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu. == Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru == === {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} === Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku: <syntaxhighlight lang="lua"> function(kod) return "&"..kod..";"; end </syntaxhighlight> Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany. Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych. | 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi. | 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany. | 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}. == Funkcje transformujące == === {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} === Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}. === {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} === Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}. === {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} === Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{NS|k=mw|w=tak|l=tak|pk=d}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani '''MediaWiki'''. Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnakiSpecjalneTaguNowiki(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}. === {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} === Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnakiSpecjalneWikiLinku(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}. === {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} === Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu, | 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''', | 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}. === {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} === Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm '''MediaWiki''' generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZnakProloguList(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu '''MediaWiki''', do dziesiętnego kodu '''HTML'''. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|EncodeZnakProloguList|tekst= * Oto jest pierwszy element listy, *: Oto jest drugi element listy. }} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}. === {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} === Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu. | 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''. | 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit&section=2}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}. === {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} === Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), ale wywołana jak nazwana, aby nie była traktowana jako nazwana ze względu na występowanie w nim znaku równości {{Code|{{=}}}}, potem jest w pełni nienazwana po tej transformacji. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PrzypisanieZnakoweEncodeHtml(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}. === {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} === Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaDwukropkaNaKodHtml(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie: <syntaxhighlight lang="mediawiki"> {{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}} </syntaxhighlight> Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}. == Inne funkcje kodujące == === {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} === Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu do transformacji jest potrzebna funkcja: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeId(id,bez_transformacji)...end; </syntaxhighlight> Parametry nieramkowe normalne funkcji: {{OpisParametrów | 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia. | 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}. == Funkcje kodów == === {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodHTMLZnaku(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''. | 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}. ==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ==== Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}. === {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p["KodyHTMLZnakówWikiCiągu"](frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8. | 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}. ==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ==== Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}. == Funkcje usuwania z tekstu zbędnych znaków == === {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} === Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}. == Funkcje specjalistyczne kodujące i do nich odwrotne == === {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} === Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|&#8206;}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeWiki(parametr,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować, | 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}. === {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} === Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|&#8206;}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeWiki(parametr,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować, | 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}. === {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} === Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IsEncodedHtml(parametr,encode,encode_real)..end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany. | 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}. | 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}. === {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} === Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI"). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania. | 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}}, | 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}. === {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} === Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Parametr do odkodowania. | 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}. | 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}}, | 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}. == Kody specjalne typowo tekstowe funkcji prostych i odwrotnych == === {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} === Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}. === {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} === Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} na {{Code|<nowiki>\"</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}. == Funkcje wydzielania części z adresów == === {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} === Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu. | 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników. | 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}. }} Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik. Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres. | 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}. === {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} === Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu. | 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony. | 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres. | 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}. === {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} === Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu. | 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony. | 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres. | 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}. === {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} === Funkcja wydziela nazwę strony z parametrów adresu strony. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. <syntaxhighlight lang="lua"> p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu. | 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres. | 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}. === {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} === Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu. | 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej. | 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres. | 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}. == Funkcje stron == === {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} === Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.URLStrona(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony. | 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}. === {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} === Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu, a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposobu, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}. Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["UrlBezProtokołu"]=function(frame)...end; </syntaxhighlight> Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}. == Funkcje kodujące i dekodujące == === {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} === Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeKoduHTMLZnaku(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}. === {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} === Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaEncodeTekst(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}. === {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} === Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy. | 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją. | 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}. === {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} === Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|&#35}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, kolejno przed i po wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}. === {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} === Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony. | 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry. | 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}. == Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z == === {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} === Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdych na kod: {{Code|{{Nowiki|&amp;num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku. Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|&#35;}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane przy analizie nagłówkowej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeHashKoduHtmlTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}. === {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} === Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna z parametrów jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} z kodu {{Code|{{Nowiki|&num;num}}}}, używając tej funkcji. Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', zostały wywołane w celu odkodowania różnych części zakodowanych wcześniej, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Funkcją odwrotną do tego w nagłówku ma nazwę: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia, | 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;num}}}}. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}. == Fukcja operująca na znakach '''#''' w kodach '''HTML''' == === {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} === Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|&num;}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeTempHashKoduHtmlTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}. === {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} === Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|&num;}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end; </syntaxhighlight> Parametry zwykłe funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części. | 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej. | 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej. }} ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}. == Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne == === {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} === Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|&num;}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części. }} Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}). ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}. === {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} === Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&amp;&num;}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka, | 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}}, | 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie, }} Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}). ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}. == Specjalistyczne ogólne funkcje adresów == === Funkcja kombajn adresów === ==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==== Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami (jeśli mechanizm {{NS|k=mw|m=tak|l=tak|pk=m}}, to uwzględnia) i nagłówkiem strony. Adres dzielimy je na trzy części funkcją: {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją: {{LinkŚródtytuł|p.TworzenieAdresuHtml}}. Przy analizie adresów, właściwych, parametrów i nagłówków, funkcja z trzech funkcji strony, parametrów i nagłówka, w której w drugim parametrze jest procedura, należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów, jako ich drugi parametr. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia. | 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka. | 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony. | 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu. }} ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}. === Funkcje pośrednie oparte na kombajnie === ==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==== Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu. Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}. Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}. Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: *{{OpisParametrów | 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem. | 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. | 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry. | 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka. | 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek. }} ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}. ==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==== Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu. Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie przy analizie tych trzech uzyskanych zmiennych parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja: {{LzLua|mw.uri.decode}}, a po nim: {{LzLua|mw.uri.encode}}. Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}. Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem. | 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. | 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry. | 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka. | 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek. }} ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}. ==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==== Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu. Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}. Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}. Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem. | 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry. | 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka. | 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek. }} ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}. ==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==== Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu. Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}. Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale. Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest: {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy: {{LzLua|mw.uri.encode}}. Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}. Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem. | 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. | 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry. | 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka. | 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek. }} ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}. === Specjalistyczne szczególne funkcje adresów === ==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==== Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}. Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}. Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}. Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|adres}} | _1 = Adres do zakodowania. | 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół. }} ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}. ==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==== Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}. Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}. Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu. | 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania. | 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron. }} Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu: {{OpisParametrów | 1 = {{Code|html}} | _1 = Adres do kodowania. | 2 = {{Code|encode}} | _2 = Czy kodować. }} Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów. ===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}. == Wykorzystanie szczególnych funkcji adresów == === {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} === Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}. Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UriEncode(frame)...end; </syntaxhighlight> Parametry tablicy ramki tablicy transportu: {{OpisParametrów | 1 = {{Code|html}} | _1 = Adres z protokołem strony. }} Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}. ==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ==== Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> khga48vtig3v9ddw1vp498pdqebmov9 Wikibooks:Moduły/StronicowyParser/SzablonyTekstu 4 63669 557785 557402 2026-09-27T13:37:52Z Persino 2851 /* {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} */ 557785 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SzablonyTekstu}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Ten moduł służy do obsługi szablonów: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}. * Szablony typu: {{Code|Śródtekst}} {{Patrz|Śródtekst}}, to są: {{s|Śródtekst}}. ** {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - to jest typ obiektu i jego numer szablonów typu: nie {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Szablony typu: {{Code|Pobierz}} {{Patrz|Pobierz}}, to są: {{s|PobierzŚródtekst}}. ** {{Code|Pobierz: obiekt}} {{Patrz|Pobierz: obiekt}} i {{Code|Pobierz: kod}} {{Patrz|Pobierz: kod}} - to jest typ obiektu i jego numer szablonów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. Szablony: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, mają walidację błędów, więc mogą, oprócz parametrów standardowych, przyjmować zmienne o kluczach odpowiednio: {{Code|klucz}} (lub {{Code|klucz1}}), {{Code|klucz2}}, {{Code|klucz3}}, ..., itd.. Tych parametrów może być dowolna liczba, ale mogą być pomiędzy nimi przerwy. ; Zbieranie elementów typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, na stronie bieżącej, jak i dołączonej{{dk}} '''{{ld|StronicowyParser|Stronicowy parser}}''' jak napotka szablon {{s|Śródtekst}}, to generuje tworzenie następujących tablic: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{Patrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, dla tych szablonów w artykule niekorzystanej, lub korzystanej według: {{Code|tablica_szablonu_tekstu_korzystanych}} {{Patrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, jako {{ZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}: <syntaxhighlight lang="lua"> if(not czy_artykul_korzystany)then if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); else if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{ {wartosc_elementu,lista_dwuelementowa,}, {}, {{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,}, {tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,}, }); end; </syntaxhighlight> * Teb powyższy kod, to nic innego jak część definicji fukcji: {{LinkŚródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}, używaną do stawiaia tego, gdy napotkano szablony tytu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. ; Strony niebieżące - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}} na stronie bieżącej, które odwołują się właśnie do tej niebieżącej{{dk}} Drugi element wsadzanej tablicy za pomocą {{LzLua|table.insert}}, jest to nic innego, jak tablica zawierająca następne tablice, gdy tam jakiś element się pojawi, a ta operacja jest robina przez funkcję {{LinkŚródtytuł|p.UstawianiePobierz}} {{ZobaczTeż|p.UstawianiePobierz}}: <syntaxhighlight lang="lua"> local tablica_szablonu_tekstu; if(czy_artykul_korzystany)then tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych; else tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych; end; if(tablica_szablonu_tekstu)then for _,pozycja in ipairs(tablica_szablonu_tekstu)do ... local dodatkowe_elementy=pozycja[2]; ... if(not czy_tak)then local tab_numer; if(tablica_zmiennych)then tab_numer={}; for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name]; end; end; table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer}); break; </syntaxhighlight> * gdzie: tabela: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, będąca podtabelą tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, to nic innego, jak zbiór tablic mniejszych dla posczególnych obiektów, tutaj nazwanych kluczami: {{Code|name}}, w tych mniejszych mieszczą się pojedyncze tabele, ktore pierwszym elementem jest uchwyt, a drugim jest sam tekst szablonu typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. * Tą funkcję używamy do zbierania informacji o inne stronie, dołączonej do aktualnej, w wyniku uruchomienia szablonu linku lub pobierania. ; Strony bieżące korzystane - zbieranie elementów szablonu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, które odwołują się do niej{{dk}} Funkcja natomiast: {{LinkŚródtytuł|p.UstawianiePobierz}}, jest uruchamiana przez funkcję: {{LinkŚródtytuł|p.UstawPobierzKorzystanie}}, dla modułu bieżącego, która zbiera odpowiednie elementy pobierania (szablony typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}) w tablicach linkowych (pobierania) {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, to są tablice, aktualnej - bieżącej, strony, ta tablica jest tworzona sposobem, ale nie w tej funkcji, ta funkcja jedynie z tego korzysta, a ten kod poniżej jest używany, gdzie indziej w kodzie {{ZobaczTeż|p.LinkowanieFinalizowaniePrac}}: <syntaxhighlight lang="lua"> if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; </syntaxhighlight> W tej tablicy mieszczą się informację, co do poszczególnych obiektów pobierania typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. ---- ; Inne{{dk}} Z tych tabel korzysta, nie tylko, szablon: {{s|Śródtekst}}, ale też i: {{s|PobierzŚródtekst}}, przy pomocy oprogramowania modułu: {{m|StronicowyParser}}, czy: {{m|StronicowyParser/}}. == {{Śródtytuł|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}}{{Code|p.PreparowanieSzablonoweLinkoweSzablonuTekstu}} == Funkcja służy do zastępowania parametrów, w szablonie typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, w zmiennych parametru: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}} lub {{Code|1}} {{LinkPatrz|1}}, w jego wartości, argumentów typu o wzorze ogólnym: {{Code|<nowiki>klucz%d*</nowiki>}} {{Patrz|klucz%d*}}, na odpowiednie wartości, ustawiane przez szablon w rodzaju: {{s|PobierzŚródtekst}} {{LinkPatrz|Pobierz}}, występujących w parametrach w wywołaniach jego szablonu lub bezpośrednio w tym pierwszym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PreparowanieSzablonoweLinkoweSzablonuTekstu(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst-kod}} | _1 = Jest to kod bazy: {{Code|{{m|Szablonowe}}}}, o odpowiednim formacie,którego poszczególne elementy dzieci i potomków są modyfikowane. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa strony w formacie wykonywalnym szablonów, względem innych przestrzeni. | 3 = Parametry szablonu typu: {{s|Śródtekst}}, rodzaju: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}: | nagłówek3 = tak | 4 = {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|stare__tablica_analizy_obiektow_strony_dany_modul}} | _4 = Baza danych szablonowa stworzona specjalnie dla szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, który jest dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tą funkcję. | 5 = {{Code|__tablica_danych_parametrow_szablonu_strony}} {{Patrz|stare___tablica_danych_parametrow_szablonu_strony}} | _5 = Tabela paremetrów rozwinieć bazy: {{Code|__tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|stare__tablica_analizy_obiektow_strony_dany_modul}}, dzięki któremu uzyskuje się przyszybszenie stronicowego parsera. Jest ona dokładną kopią tej orginalnej przed jej zmodyfikowaniem przez tę funkcję. | 6 = Parametry szablonu typu: {{s|PobierzŚródtekst}}, rodzaju: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla strony bieżącej: | nagłówek6 = tak | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. Jest to tabela parametrów szablonu. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. Jest to tablica bazy kodów parsowania: '''{{ld|Szablonowe|w bibliotece parsowania dowolnego wikikodu mechanizmu MediaWiki}}'''. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Jest to baza parametrów rozwinieć, jak: {{Code|__tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|stare___tablica_danych_parametrow_szablonu_strony}}, ale dla: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Zweacane parametry: {{OpisParametrów | 1 = Zwraca to samo, co jest tym: {{Code|tekst}} {{LinkPatrz|tekst-kod}} | komórka1 = tak }} == {{Śródtytuł|p.ParametrTekstowySzablonuTekstu}}{{Code|p.ParametrTekstowySzablonuTekstu}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, tekstu o nazwie pierwszy z kolei, który istnieje, więc: {{Code|tekst}} {{Patrz|tekst}}, {{Code|treść}} {{Patrz|treść}} lub {{Code|1}} {{Patrz|1}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o różnych parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.SzablonTekstuBezPreProcess}}{{Code|p.SzablonTekstuBezPreProcess}} == Funkcja liczy element tablicy: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, o nazwie {{Code|bez preprocess}} {{Patrz|bez preprocess}}, parametrów szablonu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}, i go zwraca: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = Parametry szablonu {{s|Śródtekst}}, o parametrach nazwanych lub nienazwanych. }} == {{Śródtytuł|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}}{{Code|p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony}} == Funkcja elementy tablicy: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, przypisuje tablicy: {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}}, czyli do tego pierwszego dodaje elementy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy o nazwie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a jeżeli ta tablica nie istnieje, to jest tworzona: Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}, jest to tablica dla strony niekorzystanej. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}, jest to tablica dla strony korzystanej, aktualnej strony, która jest wyświetlana na ekranie. }} == {{Śródtytuł|p.DodawanieDoBazyStronySzablonuTekstu}}{{Code|p.DodawanieDoBazyStronySzablonuTekstu}} == Szablon dodający elementy do tablicy bazy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, lub {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn. do tablicy: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, jest równy wartości fałszywej, przeciwnie do: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tej samej tablicy co poprzednio. Te elementy są dodawane według następującego kodu: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}} lub {{LinkPatrz|tablica_zmiennych2}}. | 2 = {{Code|wartosc_elementu}} {{Patrz|wartosc_elementu}} | _2 = Rodzaj elementu, jak: {{Code|Śródtekst}} {{Patrz|rodzaj: Śródtekst}}, dla jednego z szablonów tekstu. | 3 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _3 = Tablica elementu tablicy zbierającej dane, element posiada tylko pierwszy element, który jest uchwytem. | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}} | _4 = Obiekt i kod, szablonu typu {{s|Śródtekst}} {{LinkPatrz|Śródtekst}} w tekście zakodowanym. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 6 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _6 = Nazwa szablonu tekstu, typu, dla {{LinkPatrz|Śródtekst}}. | 7 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _7 = Tablica modyfikatorów uruchmienia szablonu {{LinkPatrz|Śródtekst}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Tablica bazy kodów modułu {{m|Szablonowe}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _9 = Tablica rozkładu na czynniki pierwsze, elementów bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 10 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _10 = Przyjmuje wartość: {{Code|true}}, gdy artykuł jest taki sam, jak strona w przeglądarce. }} Tablica jako drugi element dodawanej tablicy w kodzie: {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}, to są tam podtablice, które są tablicami składających się z obiektu i kodu elementu {{s|PobierzŚródtekst}} {{Patrz|PobierzŚródtekst}}, tych podtablic może być wiele dla różnych tych. == {{Śródtytuł|p.UstawianiePobierz}}{{Code|p.UstawianiePobierz}} == Funkcja dodaje do danego elementu typu: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, utworzonego na podstawie obiektów nie typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, w postaci tablicy utworzonego z trzech elementów, tzn.: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}, a trzeci element tablicy jest numerkiem nazwanym, ile w danym elemencie było wtedy aktualnie elementów przed wywołaniem szablonu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, dla zmiennych w tablicach: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Ten element służy do wstawiania innych elementów do tablic nazwanych uchwytów oraz ich numerków (dla elementów numerowanych) lub nie, aby przesunąc od pewnego momentu ich zawartości do przodu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 2 = {{Code|tablica_zmiennych2}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. | 3 = {{Code|obiekt}} {{LinkPatrz|Pobierz: obiekt}} | _3 = Obiekt, jak: {{LinkPatrz|rodzaj: Śródtekst}}, obiektu typu {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|kod}} {{LinkPatrz|Pobierz: kod}} | _4 = Numer danego obiektu typu {{LinkPatrz|Pobierz}}. | 5 = {{Code|nazwa_obiektu}} {{Patrz|nazwa_obiektu}} | _5 = Nazwa danego obiektu {{LinkPatrz|Śródtekst}}. | 6 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _6 = Unikalny uchwyt danego obiektu {{LinkPatrz|Śródtekst}}. | 7 = {{Code|czy_artykul_korzystany}} | _7 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. }} Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany}}, przyjmuje wartość {{Code|true}}, wtedy jest używana tablica: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tej samej tablicy, co poprzednio, ale dla elementów typu: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, na podstawie tego w ten sposób jest tworzona pewna tablica, te elementy są dodawane do drugiej podtablicy w tablicy dodawanej w {{LinkZobaczTeż|p.DodawanieDoBazyStronySzablonuTekstu}}. == {{Śródtytuł|p.UstawPobierzKorzystanie}}{{Code|p.UstawPobierzKorzystanie}} == Funkcja na podstawie stworzonych elementów w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, która składa się z tablic numerowanych, gdzie w każdej takiej jego tablicy są dwie podtablice, te elementy są zbierane dla: {{Code|rodzaj: Śródtekst}} {{LinkPatrz|rodzaj: Śródtekst}}, pierwsza taka podtablica jest tablicą numerowaną z: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, i {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, a druga taka podtablica jest z: {{Code|Pobierz: obiekt}} {{LinkPatrz|Pobierz: obiekt}}, i {{Code|Pobierz: kod}} {{LinkPatrz|Pobierz: kod}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawPobierzKorzystanie(tablica_zmiennych2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_zmiennych2}} | _1 = Jak w: {{LinkPatrz|tablica_zmiennych2}}. }} Na podstawie każdego takich elementów numerowanych w tablicy: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{LinkPatrz|tablica_szablonu_tekstu_linkowe_korzystane}}, tablicy: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, jest uruchamiana funkcja: {{LinkŚródtytuł|p.UstawianiePobierz}}, dla pierwszego parametru z wartością {{Code|nil}}, drugim: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, i dalszymi. == {{Śródtytuł|p.ZamienianiePobierzNaKod}}{{Code|p.ZamienianiePobierzNaKod}} == Funkcja na podstawie parametru {{ZobaczTeż|tekst}}: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, występujących w tabeli: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu}}, zdefiniowanych jako tablica: {{Code|<nowiki>pozycja[3][1][1]</nowiki>}}. Modyfikuje też element: {{ZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}}, zapisany w bazie szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, tzn.: {{Code|<nowiki>(pozycja[4] or {})[1]</nowiki>}} (baza kodów bazy dla danego szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}} (baza kodów strony bieżącej), i {{Code|<nowiki>(pozycja[4] or {})[2]</nowiki>}} (baza parametrów danych obiektów dla szablonu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}), a jeśli ona nie istnieje, to: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}} (baza parametrów strony bieżącej), ale zwykle istnieją te pierwsze, aby wyświetlić zamieniony, czyli zmodyfikowany, element, ewentualnie ze zmodyfikowaną kolejno bazą danych kodów i parametrów strony bieżącej. Funkcja do szybszego działania wykorzystuje tabelę: {{Code|(pozycja[4] or {})[2]}} lub {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Definicja skrótowa funkcji: <syntaxhighlight lang="Lua"> function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|obiekt}} | _1 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 2 = {{Code|kod}} | _2 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 3 = {{Code|pozycja}} | _3 = Dany element numerowany, który przedstawia pozycję dla elementów typu: {{LinkPatrz|Śródtekst}}, ze strony szablonów rodzaju: {{Code|Śródtekst}}{{LinkPatrz|Śródtekst}}, lub {{Code|Pobierz}} {{LinkPatrz|Pobierz}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|czy_korzystane}} {{Patrz|czy_korzystane}} | _8 = Czy wykorzystawane elementy są typu: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, gdy ta wartość przyjmuje wartość {{Code|true}}, przeciwnie: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje do modyfikacji funkcję: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, ona seryjnie modyfikuje całe elementy tekstu {{LinkZobaczTeż|tekst}} lub elementy bazy {{LinkZobaczTeż|tablica_analizy_obiektow_strony_dany_modul}} o pewnych dwuwymiarowych nazwach, co do kodów bazy. Element tekstu do modyfikacji jest uzyskiwany z funkcji: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, jeżeli ten tekst istnieje, a gdy nie, to funkcja nie zwraca żadnej wartości, a jak jest, to ten tekst, ze zmodyfikowaną tabelą bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, też ze zmodyfikowaną tabelą parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuPobierz}} == Funkcja zastępuje swoje odwołanie uchwytowe dla elementu typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, szablonu typu: {{s|PobierzŚródtekst}}, przetransformowanym tekstem z szablonu typu: {{s|Śródtekst}} {{LinkPatrz|Śródtekst}}: o tych samych uchwytach z elementów typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jeżeli jest jeden tam taki uchwyt dla tego elementu, na odpowiedniej stronie nie otoczonej znacznikami: {{Tag|includeonly}}, '''mechanizmu: {{NS|l=tak|k=mw|w=tak|pk=d}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Treści obiektu typu: {{LinkPatrz|Pobierz}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|Pobierz: obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|Pobierz: kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tabela_parametrow_szablonu}} | _7 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu}}. | 8 = {{Code|tablica_zmiennych}} | _8 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja wykorzystuje funkcję: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na bieżącej stronie, lub {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - gdy jego odpowiednik obiekt {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, znajduje się na stronie niebieżącej, obie tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a także funkcję: {{LinkŚródtytuł|p.ZamienianiePobierzNaKod}}, który zamienia ten obiekt: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, pobierania na odpowiedni wikikod do działania z szablonu tekstu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Jeżeli funkcja nie wykrywała w ramach aktualnej strony elementu typu nie {{LinkPatrz|Pobierz}} swojego odpowiednika względem tej pierwszej tablicy, to szuka je w ramach tej niekaktualnej względem tej drugiej, a jeżeli funkcja znalazła taki swój odpowiednik, to go zwraca, a jeżeli nie, to zwraca wartość {{Code|nil}}. == {{Śródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}}{{Code|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} == Szablon zastępuje szablon typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, jej zawartością tekstową: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, jeśli istnieje, w odpowiedni sposób. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Jak w: {{LinkPatrz|szablon}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod}}. | 4 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _4 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}}. | 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _6 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 7 = {{Code|tablica_zmiennych}} | _7 = Jak w: {{LinkPatrz|tablica_zmiennych}}. }} Funkcja do swojego działania wykorzystuje tabelę: {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}}, tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, by dało się to zastąpienie wykonać. Funkcja do swojego działania potrzebuje: {{LinkŚródtytuł|p.ParametrTekstowySzablonuTekstu}}, który pobiera tekst z tego szablonu, i zamieniąc go typu {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, ale nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, właśnie na to. == {{Śródtytuł|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}}{{Code|p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu}} == Funkcje elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, i typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, zastępuje je zawartością kolejno z odpowiednich szablonów pierwszego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}} (tutaj z siebie samego pobiera tekst, i zastępują siebie właśnie tym), i drugiego typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, czyli: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jej zawartością, oczywiście, biorąc zawartość tekstowa z: {{Code|tekst}} {{LinkPatrz|tekst}}, {{Code|treść}} {{LinkPatrz|treść}}, lub {{Code|1}} {{LinkPatrz|1}}, z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, jest właśnie tam ustawiana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = tekst, na którym operujemy, modyfikując odpowiednio jego kody, dotyczące tych dwóch szablonów, | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca_szablonowa}} | _2 = Nazwa w formacie szablonowym strony danej, nie tylko szablonów, w wywołaniach szablonowych. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 5 = {{Code|tablica_zmiennych}} | _5 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 6 = {{Code|IterowaniePoElementachTekstu}} {{Patrz|IterowaniePoElementachTekstu}} | _6 = Iterator po elementach kodów szablonowych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} i związaną z nim: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} Funkcja wykorzystuje odpowiednio tablice: {{Code|tablica_szablonu_tekstu_niekorzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_niekorzystanych}} - tablica o szablonach {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}} na stronach niebieżących, i {{Code|tablica_szablonu_tekstu_korzystanych}} {{LinkPatrz|tablica_szablonu_tekstu_korzystanych}} - a tutaj bieżących, obie tablicy są podtabelami tabeli wyższej (nadrzędnej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, są używane do szybkiego zakończeniu funkcji, gdy by takich tam obiektów nie było, w tekście. Są one używane do zastąpienia ich zawartością z szablonów typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Funkcja do swojego działania wykorzystuje funkcje: {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuPobierz}} - gdy mamy szablony typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, i {{LinkŚródtytuł|p.EdytowanieSzablonoweTekstuTypuNiePobierz}} - jeśli używamy elementy typu: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. Aby wykorzystać te funkcje, uruchamiana jest najpierw: {{Code|{{sr|#p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, to zastąpienia tego typu szanlonów odpowiednią zawartością z tych zmiennych. Funkcja do sprawdzania, czy są tego typu szablony z dwóch, rewiduje, czy one są pierwszego typu, czy drugiego, aby dało się je zastąpić wartością wikikodu ze zmiennej z szablonów {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}, to wykorzystuje do tego typu tabele: {{Code|{{sr|#p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu}}, dla obiektów typu: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, a: {{Code|{{sr|#p.szablony_stronicowego_parsera.szablony_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_stronicowego_parsera.szablony_tekstu}}, dla obiektu typu nie: {{Code|Pobierz}} {{LinkPatrz|Pobierz}}, ale: {{Code|Śródtekst}} {{LinkPatrz|Śródtekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bndragf058s89j02pytyey2a8kotqa5 Wikipedysta:Persino/brudnopis13 2 63962 557799 552705 2026-09-28T05:52:59Z Persino 2851 557799 wikitext text/x-wiki Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie. '''Zawartość:''' * [[/Ogólna teoria względności/]] : wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]] * [[/Fala grawitacyjna/]] * [[/Energia, pęd i moment pędu pola elektromagnetycznego/]] '''Inne podręczniki:''' <br /> > [[Fizyka teoretyczna]] <br /> > [[Wstęp do fizyki atomu]] <br /> > [[Elektrodynamika klasyczna]] <br /> > [[Wprowadzenie do fizyki kwantowej]] <br /> > [[Mechanika kwantowa]] <br /> {{LinkWzór|}} bfr4hfbab9mqzkge3cpia3c73yfzy5c Moduł:StronicowyParser/Pomocne 828 63964 557775 553834 2026-09-27T12:53:22Z Persino 2851 557775 Scribunto text/plain local p={}; p["SkrótDoNumeruOdnośnika"]=function(__nazwa_bazowa_strony,__nazwa_modulu) local techniczne_modul=require("Module:Techniczne"); local nazwy_modul=require("Module:Nazwy"); local strona; repeat local ile;local ile_kresek; local nazwa_bazowa_strony=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](__nazwa_bazowa_strony); strona,ile=mw.ustring.gsub(__nazwa_modulu,"^"..nazwa_bazowa_strony.."/",""); if(ile==0)then local _; _,ile_kresek=mw.ustring.gsub(__nazwa_bazowa_strony,"/",function()return;end); __nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](__nazwa_bazowa_strony); end; until((ile>0)or((ile_kresek)and(ile_kresek==0))); local zrostek; local ksiazka,podstrona,artykul=mw.ustring.match(strona,"^([^/]*)/(.*)/([^/]*)$"); if(ksiazka and podstrona and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); podstrona=mw.ustring.gsub(podstrona,"([%u%l])[^/]*/?",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..podstrona..artykul; else local ksiazka,artykul=mw.ustring.match(strona,"^([^/]*)/([^/]*)$"); if(ksiazka and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..artykul; else zrostek=mw.ustring.gsub(strona,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); end; end; return zrostek; end; p["SkrótDoNumeruOdnośnikaDołączonejKsiążki"]=function(nazwa_ksiazki) nazwa_ksiazki=mw.ustring.gsub(nazwa_ksiazki,"^.-:%s*",""); local ksiazka=mw.ustring.gsub(nazwa_ksiazki,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak);end); local ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%s+","%1"); return ksiazka; end; function p.DekodowanieTekstuNazwLinku(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych; local szablony_rozwijane_przez_javascript_nazwowe_linkowe=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_nazwowe_linkowe; local function RozwijanieNazwy(szablon,obiekt,kod) if(obiekt=="SZABLON")then local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(not wynik)then local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(szablony_rozwijane_przez_javascript_nazwowe_linkowe[nazwa_szablonu])then local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_spisu_tresci~="") and ("/"..nazwa_spisu_tresci) or "")); return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; end); if(wynik)then return wynik;end; end; end); return szablon,true; elseif(nazwa_szablonu=="Br")then return " ",false; elseif( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_spisu_tresci~="") and ("/"..nazwa_spisu_tresci) or "")); return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true),true; end; end); if(wynik)then return wynik,jaki_wynik;end; else return wynik,false; end; return nil,true; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="br")then return " "; end; end; return szablon; end; local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) local wynik,czy_szablon=RozwijanieNazwy(szablon,obiekt,kod); czy_szablon_wszystko=czy_szablon_wszystko or czy_szablon; return wynik; end); if(czy_szablon_wszystko)then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; local function Tryb1(tekst) local specjalne_modul=require("Module:Specjalne"); local parametry_modul=require("Module:Parametry"); tekst=specjalne_modul["UsuńZnakiSpecjalne"](tekst); tekst=parametry_modul["Odstępy"]{[1]=tekst,[2]="tak",[4]="tak",}; return tekst; end; local function Tryb2(tekst) local html_modul=require("Module:Html"); local tekst2; tekst,tekst2=html_modul.DecodeHtml(tekst,true,nil,nil,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony); return tekst,tekst2; end; if((not tryb)or(tryb==1))then return Tryb1(tekst); elseif(tryb==2)then return Tryb2(tekst); elseif(tryb==3)then local tekst,tekst2=Tryb2(tekst); tekst2=Tryb1(tekst2); return tekst,tekst2; else return tekst; end; end; return p; bj7x41maa4ibkfnhuw48d26ih7dar5v 557798 557775 2026-09-28T04:47:41Z Persino 2851 557798 Scribunto text/plain local p={}; p["SkrótDoNumeruOdnośnika"]=function(__nazwa_bazowa_strony,__nazwa_modulu) local techniczne_modul=require("Module:Techniczne"); local nazwy_modul=require("Module:Nazwy"); local strona; repeat local ile;local ile_kresek; local nazwa_bazowa_strony=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](__nazwa_bazowa_strony); strona,ile=mw.ustring.gsub(__nazwa_modulu,"^"..nazwa_bazowa_strony.."/",""); if(ile==0)then local _; _,ile_kresek=mw.ustring.gsub(__nazwa_bazowa_strony,"/",function()return;end); __nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](__nazwa_bazowa_strony); end; until((ile>0)or((ile_kresek)and(ile_kresek==0))); local zrostek; local ksiazka,podstrona,artykul=mw.ustring.match(strona,"^([^/]*)/(.*)/([^/]*)$"); if(ksiazka and podstrona and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); podstrona=mw.ustring.gsub(podstrona,"([%u%l])[^/]*/?",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..podstrona..artykul; else local ksiazka,artykul=mw.ustring.match(strona,"^([^/]*)/([^/]*)$"); if(ksiazka and artykul)then ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); zrostek=ksiazka..artykul; else zrostek=mw.ustring.gsub(strona,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end); end; end; return zrostek; end; p["SkrótDoNumeruOdnośnikaDołączonejKsiążki"]=function(nazwa_ksiazki) nazwa_ksiazki=mw.ustring.gsub(nazwa_ksiazki,"^.-:%s*",""); local ksiazka=mw.ustring.gsub(nazwa_ksiazki,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak);end); local ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%s+","%1"); return ksiazka; end; function p.DekodowanieTekstuNazwLinku(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych; local szablony_rozwijane_przez_javascript_nazwowe_linkowe=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_nazwowe_linkowe; local function RozwijanieNazwy(szablon,obiekt,kod) if(obiekt=="SZABLON")then local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(not wynik)then local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(szablony_rozwijane_przez_javascript_nazwowe_linkowe[nazwa_szablonu])then local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_spisu_tresci~="") and ("/"..nazwa_spisu_tresci) or "")); return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; end); if(wynik)then return wynik;end; end; end); return szablon,true; elseif(nazwa_szablonu=="Br")then return " ",false; elseif( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_spisu_tresci~="") and ("/"..nazwa_spisu_tresci) or "")); return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true),true; end; end); if(wynik)then return wynik,jaki_wynik;end; else return wynik,false; end; return nil,true; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="br")then return " "; end; end; return szablon; end; local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) local wynik,czy_szablon=RozwijanieNazwy(szablon,obiekt,kod); czy_szablon_wszystko=czy_szablon_wszystko or czy_szablon; return wynik; end); if(czy_szablon_wszystko)then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; local function Tryb1(tekst) local specjalne_modul=require("Module:Specjalne"); local parametry_modul=require("Module:Parametry"); tekst=specjalne_modul["UsuńZnakiSpecjalne"](tekst); tekst=parametry_modul["Odstępy"]{[1]=tekst,[2]="tak",[4]="tak",}; return tekst; end; local function Tryb2(tekst) local html_modul=require("Module:Html"); local tekst2; tekst,tekst2=html_modul.DecodeHtml(tekst,true,nil,nil,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony); return tekst,tekst2; end; if((not tryb)or(tryb==1))then return Tryb1(tekst); elseif(tryb==2)then return Tryb2(tekst); elseif(tryb==3)then local tekst,tekst2=Tryb2(tekst); tekst2=Tryb1(tekst2); return tekst,tekst2; else return tekst; end; end; return p; 36fge7ht2h3isjoj6epzaoz9lsgntzo Moduł:StronicowyParser/ZbieranieDanychStron/Potrzebne 828 64332 557800 557639 2026-09-28T06:35:55Z Persino 2851 557800 Scribunto text/plain local p={}; function p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); if(uchwyt_obiektu~="")then KtorySzablonMaZwracacKategorie(uchwyt_obiektu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=uchwyt_obiektu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(uchwyt_obiektu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron") local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"); end; end; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(parametry_modul.CzyTak(uchwyt_obiektu))then local nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); end; else nazwa_przestrzeni=nazwa_przestrzeni or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=nazwa_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); end; else local nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; nazwa_przestrzeni=nazwa_przestrzeni or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=nazwa_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; if((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; return p; 8805pixtmiid3bdjvpf77kkk9mnwckb 557801 557800 2026-09-28T06:42:02Z Persino 2851 557801 Scribunto text/plain local p={}; function p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); if(uchwyt_obiektu~="")then KtorySzablonMaZwracacKategorie(uchwyt_obiektu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=uchwyt_obiektu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(uchwyt_obiektu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron") local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"); end; end; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- local nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); end; else nazwa_przestrzeni=nazwa_przestrzeni or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=nazwa_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); end; else nazwa_przestrzeni=nazwa_przestrzeni or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=nazwa_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; if((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; return p; pnfq97w3ci8nrtpuowaydq2odhoz7sb 557802 557801 2026-09-28T06:54:10Z Persino 2851 557802 Scribunto text/plain local p={}; function p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); if(uchwyt_obiektu~="")then KtorySzablonMaZwracacKategorie(uchwyt_obiektu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=uchwyt_obiektu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(uchwyt_obiektu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron") local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"); end; end; else p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- local nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); end; else nazwa_przestrzeni=nazwa_przestrzeni or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=nazwa_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); end; else nazwa_przestrzeni=nazwa_przestrzeni or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=nazwa_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; if((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; return p; gpdwbjp0m6amgkztkcd10cq9wxymjj1 557803 557802 2026-09-28T07:29:41Z Persino 2851 557803 Scribunto text/plain local p={}; function p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod) if(lista_dwuelementowa)then local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then tabela_elementow_strony_kodow[nazwa_obiektu]={}; tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(not uchwyty_bez_numeracji)then tab_obiekt.uchwyty_bez_numeracji={}; uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; end; uchwyty_bez_numeracji[kod]=lista_dwuelementowa; end; end; function p.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod) local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu]; if(not tab_obiekt)then return nil;end; local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji; if(uchwyty_bez_numeracji)then return uchwyty_bez_numeracji[kod]; end; end; function p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); if(uchwyt_obiektu~="")then KtorySzablonMaZwracacKategorie(uchwyt_obiektu); local lista_dwuelementowa={}; lista_dwuelementowa[1]=uchwyt_obiektu; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_obiektu=true; end; if(tab_numer)then tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1; local numer=tab_numer[nazwa_obiektu]; table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa); else table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa); end; return lista_dwuelementowa; end; end; function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji]; if(uchwyt_obiektu)then local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron") local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"); end; end; else p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- local UstalanieNazwStronyArtykularnegoWoluminu=function(czy_tak) nazwa_przestrzeni=(czy_tak and nazwa_przestrzeni or nil) or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=(czy_tak and nazwa_przestrzeni_ksiazki or nil) or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=(czy_tak and nazwa_ksiazki or nil) or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; nazwa_artykulu=nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; end; local nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then UstalanieNazwStronyArtykularnegoWoluminu(false); elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); return; else UstalanieNazwStronyArtykularnegoWoluminu(false); end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); end; else UstalanieNazwStronyArtykularnegoWoluminu(true); p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); end; else UstalanieNazwStronyArtykularnegoWoluminu(true); if((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni_stare,nazwa_przestrzeni_ksiazki_stare,nazwa_ksiazki_stare,nazwa_artykulu_stare, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; return p; mo2m47pi7dtug1rn2iysu27gi0ckem4